Mongo For Java常用操作
阿新 • • 發佈:2019-01-30
初始化連線:
String url = "xxx.xxx.xxx.xxx"; String dataName = "test"; int port = 27017; MongoClient mongo = new MongoClient(url, port); MongoDatabase db = mongo.getDatabase(dataName); MongoCollection<BasicDBObject> collection1 = db.getCollection("collection1", BasicDBObject.class);
Insert:
BasicDBObject dbo = new
Delete:
BasicDBObject dbo = new BasicDBObject(); dbo.put("name", "jzp"); // 刪除符合條件的第一個文件 collection1.deleteOne(dbo); // 刪除所有符合條件的文件 collection1.deleteMany(dbo);
Update:
//要更新的資料的主鍵條件 BasicDBObject dbo = new BasicDBObject(); dbo.put("name"
Find:
BasicDBObject dbo = new BasicDBObject(); dbo.put("name", "jzp"); BasicDBObject sort = new BasicDBObject(); sort.put("age", 1); FindIterable<BasicDBObject> find = collection1.find(dbo).sort(sort).skip(0
Group by:
// where 條件 DBObject ageCond = new BasicDBObject(); ageCond.put("$gte", 1); ageCond.put("$lte", 100); DBObject where = new BasicDBObject(); where.put("age", ageCond); // group by 計數器初始條件 BasicDBObject ini = new BasicDBObject(); ini.put("count", 0); // group by mapReduce函式 StringBuffer reduce = new StringBuffer(); reduce.append(" function(doc,prev){ "); reduce.append(" prev.count++; "); reduce.append(" } "); BasicDBObject group = new BasicDBObject(); // group by 集合 group.put("ns", "collection1"); // group by 維度 group.put("key", new BasicDBObject("age", true)); // group by 計數器初始條件 group.put("initial", ini); // group by mapReduce函式 group.put("$reduce", reduce.toString()); // group by where group.put("cond", where); // 執行group by BasicDBObject command = new BasicDBObject(); command.put("group", group); Document result = db.runCommand(command); // retval 關鍵字 ArrayList<Document> dbList = (ArrayList) result.get("retval"); for (int i = 0; i < dbList.size(); i++) { Integer age = dbList.get(i).getInteger("age"); long count = Math.round(dbList.get(i).getDouble("count")); // TODO }
Lookup(對應mysql的left/right join):
BasicDBObject lookupCon = new BasicDBObject(); lookupCon.put("from", "collection2"); lookupCon.put("localField", "name"); lookupCon.put("foreignField", "name"); lookupCon.put("as", "conn"); BasicDBObject lookup = new BasicDBObject(); lookup.put("$lookup", lookupCon); BasicDBObject sortCon = new BasicDBObject(); sortCon.put("age", 1); BasicDBObject sort = new BasicDBObject(); sort.put("$sort", sortCon); BasicDBObject limit = new BasicDBObject(); limit.put("$limit", 10); BasicDBObject skip = new BasicDBObject(); skip.put("$skip", 0); List<BasicDBObject> list = new ArrayList<BasicDBObject>(); list.add(lookup); list.add(sort); list.add(skip); list.add(limit); AggregateIterable<BasicDBObject> it = collection1.aggregate(list); MongoCursor<BasicDBObject> cursor = it.iterator(); while (cursor.hasNext()) { BasicDBObject dbo = cursor.next(); // TODO }