如何查找和合并mongodb文档

时间:2014-08-24 21:01:14

标签: mongodb mongodb-java nosql

我正在尝试使用相同键合并两个文档的测试应用程序。我认为findAndModify()会做一份工作,但事实并非如此。例如,我们假设数据中包含一个文档'采集: {"日期":" 2014-08-23"," field1":" A"}

我试过了:

bo.put( "Date", "2014-08-23");
bo.put( "field2", "B" );
query.put( "Date", "2014-08-23" );

DBObject resObj = collection.findAndModify( query, bo );

结果是{"日期" :" 2014-08-23"," field2" :" B" } 我想{"约会" :" 2014-08-23"," field1":" A"," field2" :" B" }

如何在一个DB或Collection命令中执行此操作?

1 个答案:

答案 0 :(得分:3)

默认情况下,普通update函数(或其表兄findAndModify)完全替换文档。如果要保留旧内容并仅更新其某些字段,则需要使用$set operator

在MongoDB shell语法中:

db.collection.update(
     { "Date": "2014-08-23" },
     { "$set": { "field2": "B"} }
 );

在Java语法中:

DBObject where = new BasicDBObject("Date", "2014-08-23");
DBObject update = new BasicDBObject("$set", new BasicDBObject("field2", "B"));
collection.update(where, update);