我正在尝试使用相同键合并两个文档的测试应用程序。我认为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命令中执行此操作?
答案 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);