无法使用Mongodb Java Driver更新Inner Arraylist对象

时间:2014-02-01 19:38:04

标签: java mongodb mongodb-query mongo-java

我在mongodb数据库中有以下文档结构:

{
    "_id" : ObjectId("52ec7b43e4b048cd48499b35"),
    "eidlist" : [
        {
            "eid" : "64286",
            "dst" : NumberLong(21044),
            "score" : 0
        },
        {
            "eid" : "65077",
            "dst" : NumberLong(21044),
            "score" : 0
        }
    ],
    "src" : NumberLong(21047)
}

我想使用Java-mongodb驱动程序更新第一个对象的得分字段: 我尝试了以下代码,但它无法正常工作:(:

  DBObject update_query=new BasicDBObject("src", key).append("eidlist.eid", e.getEdgeid());
  DBObject data=new BasicDBObject("$set",new BasicDBObject("eidlist.score",100));
 coll.update(update_query, data);

请帮我解决这个问题。我已经检查了所有传递给更新功能的参数。我认为更新逻辑有问题:(

2 个答案:

答案 0 :(得分:2)

你很亲密。您从更新中忽略了positional operator。编辑您的代码,如图所示。

DBObject data=new BasicDBObject("$set",new BasicDBObject("eidlist.$.score",100));

答案 1 :(得分:0)

解决此问题的方法是:

DBObject data=new BasicDBObject("$set",new BasicDBObject("eidlist.$.score",""+100));

确保更新查询中使用的每个字段的数据类型。它应该与我们在mongodb中存储的内容兼容:)