MongoDb在其java驱动程序中的$ set等价物

adi*_*aur 25 java mongodb

有没有办法可以通过Java驱动程序修改MongoDb中某个键的值.我尝试了以下内容:

someCollection.update(DBObject query, DBObject update);
someCollection.findAndModify(DBObject query, DBObject update);
Run Code Online (Sandbox Code Playgroud)

但这两个函数都完全用更新的文档替换查询的文档.在mongo shell中使用$ set的情况下,只更新特定键的一个值的方法是什么.(除了创建一个全新的文档,其中复制了所有字段并更新了其中一个字段).

Yek*_*sek 30

BasicDBObject carrier = new BasicDBObject();
BasicDBObject query = new BasicDBObject();
query.put("YOUR_QUERY_STRING", YOUR_QUERY_VALUE);

BasicDBObject set = new BasicDBObject("$set", carrier);
carrier.put("a", 6);
carrier.put("b", "wx1");        
myColl.updateMany(query, set);
Run Code Online (Sandbox Code Playgroud)

这应该有用,接受的答案不正确.

  • Andrew Orsich的回答是错的!这个工作. (3认同)

And*_*ich 18

我不是java专家,但似乎以下代码符合您的需求:

BasicDBObject set = new BasicDBObject("$set", new BasicDBObject("age", 10));
set.append("$set", new BasicDBObject("name", "Some Name");
someCollection.update(someSearchQuery, set);
Run Code Online (Sandbox Code Playgroud)

另请看这个例子.

  • 嗨这不是正确的答案,它只会设置最后一个值.请参阅我在下面发布的答案 (3认同)
  • Yekmer Simsek是对的.您的代码只会更新最后一个. (3认同)