import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.List; import org.bson.Document; import com.mongodb.MongoClient; import com.mongodb.client.MongoCollection; import com.mongodb.client.MongoCursor; import com.mongodb.client.MongoDatabase; import com.mongodb.client.model.Filters; public class MongoDBJDBC { public static void main(String args[]) { Calendar today = Calendar.getInstance(); Date endDay = today.getTime(); today.add(Calendar.DAY_OF_YEAR, -6); Date insertDay = today.getTime(); today.add(Calendar.MONTH, -6); Date beginDay = today.getTime(); System.out.println(beginDay); System.out.println(insertDay); System.out.println(endDay); // 連接到Mongodb服務 MongoClient mongoClient = new MongoClient("127.0.0.1", 27017); try { // 連接到數據庫.如果庫不存在則創建 MongoDatabase db = mongoClient.getDatabase("space"); // 選擇表.如果表不存在則創建表 MongoCollection<Document> collection = db .getCollection("suggestion"); // 清空表 collection.deleteMany(Filters.exists("_id")); // 創建索引.復合索引,按type升序,按cont降序 collection.createIndex(new Document("type", 1).append("cont", -1)); // 構造Document List<Document> list = new ArrayList<Document>(); Document document1 = new Document(); document1.put("type", 1); document1.put("cont", "數據挖掘"); document1.put("hotness", 1563.5); document1.put("updatetime", insertDay); Document document2 = new Document(); document2.put("type", 2); document2.put("cont", "北京百度科技有限公司"); document2.put("shortcont", "百度"); document2.put("hotness", 1563.5); document2.put("companyid", 41); document2.put("updatetime", insertDay); Document document3 = new Document(); document3.put("type", 3); document3.put("cont", "華中科技大學"); document3.put("hotness", 90.7); document3.put("updatetime", insertDay); Document document4 = new Document(); list.add(document4); list.add(document2); list.add(document3); // 單條插入 collection.insertOne(document1); // 多條插入 collection.insertMany(list); // 按條件查詢遍歷表 MongoCursor<Document> cursor = collection.find( Filters.and(Filters.gte("updatetime", beginDay), Filters.lt("updatetime", endDay))).iterator(); while (cursor.hasNext()) { Document document = cursor.next(); if (document.containsKey("companyid")) { document.put("hotness", document.getDouble("hotness") + 10); // 更新。若包含companyid屬性,則熱度加10后更新 collection.updateOne( Filters.eq("_id", document.get("_id")), new Document("$inc", new Document("hotness", 10))); } } // 批量更新。所有包含hotness屬性的其hotness值乘以2 collection.updateMany(Filters.exists("hotness"), new Document( "$mul", new Document("hotness", 2))); // 批量刪除。熱度小於10的全部刪除掉 collection.deleteMany(Filters.lte("hotness", 10)); // 全表遍歷 cursor = collection.find().iterator(); while (cursor.hasNext()) { System.out.println(cursor.next()); } } catch (Exception e) { e.printStackTrace(); } finally { // 關閉連接 mongoClient.close(); } } }