使用Java更新mongodb中的列表字段

使用Java更新mongodb中的列表字段,java,mongodb,Java,Mongodb,我有一个类,它包含一个列表作为字段之一。如何更新此字段 找到了更新字段的示例 BasicDBObject newDocument3 = new BasicDBObject().append("$set", new BasicDBObject().append("type", "dedicated server")); collection.update(new BasicDBObject().append("hosting", "hostA"), newDocument3); 从链

我有一个类,它包含一个列表作为字段之一。如何更新此字段

找到了更新字段的示例

BasicDBObject newDocument3 = new BasicDBObject().append("$set", new 
    BasicDBObject().append("type", "dedicated server"));

collection.update(new BasicDBObject().append("hosting", "hostA"), newDocument3);
从链接->

这就是我尝试过的

BasicDBObject objectUpdateCommand = new BasicDBObject("$push", new 
    BasicDBObject("someList", stringValue));

collection.update(new BasicDBObject().append("id", user.getId()).append("email", 
    user.getEmail()), objectUpdateCommand);
结果:没有变化

我错过了什么

在shell上试过,效果不错[我知道它与所有ID都不匹配,但用于测试目的]

db.user.update( { Id: 'yourid'}, {$push: { someList: 'appendNewValue'} } )

我已将以下行插入到集合中

{ "_id" : ObjectId("50bc89ef88555f5ad35da8ba"), "id" : 1, "email" : "test1@test.com", "list" : [ "list1", "list2" ] }
{ "_id" : ObjectId("50bc89f788555f5ad35da8bb"), "id" : 2, "email" : "test2@test.com", "list" : [ "list1", "list2" ] }
然后,通过使用下面的代码,我能够用id=1更新文档

BasicDBObject cmd = new BasicDBObject().append("$push", new  BasicDBObject("list", "list3"));
coll.update(new BasicDBObject().append("id", 1).append("email","test1@test.com"), cmd);
更新后,行的外观如下所示:

{ "_id" : ObjectId("50bc89ef88555f5ad35da8ba"), "id" : 2, "email" : "test2@test.com", "list" : [ "list1", "list2" ] }
{ "_id" : ObjectId("50bc89f788555f5ad35da8bb"), "email" : "test1@test.com", "id" : 1, "list" : [ "list1", "list2", "list3" ] }

再次检查您的代码。它应该与此代码配合使用。

我正在学习如何编辑我的帖子,我感谢您为我这么做。谢谢。你在mongo shell中尝试过相同的查询吗?我没有尝试过,但我在shell上看到过类似的例子。我会试一试的。如果成功了,我会告诉你的。我尝试了shell命令,它成功了。使用shell命令更新了主体。请检查选择器部分是否正常(可能是
\u id
而不是
id
没有。这没有帮助。结果仍然相同。@parvin您发布的两个表单都是等效的。BasicDBObject(字符串,BasicDBObject)构造函数的存在是为了方便。帕文感谢您的回复。我确实学到了一些东西,您的回复验证了我的思路是正确的。看起来字段名不正确,在修复后…一切都很顺利。