初始化连接:
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 BasicDBObject(); dbo.put("name", "jzp"); collection1.insertOne(dbo);
Delete:
BasicDBObject dbo = new BasicDBObject(); dbo.put("name", "jzp"); // 删除符合条件的第一个文档 collection1.deleteOne(dbo); // 删除所有符合条件的文档 collection1.deleteMany(dbo);
Update:
//要更新的数据的主键条件 BasicDBObject dbo = new BasicDBObject(); dbo.put("name", "jzp"); //更新的目标数据条件 BasicDBObject update = new BasicDBObject(); update.put("name", "jzp1"); collection1.updateOne(update, new BasicDBObject("$set", update));
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).limit(10); MongoCursor<BasicDBObject> iterator = find.iterator(); while (iterator.hasNext()) { BasicDBObject next = iterator.next(); // TODO }
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 }