无法使用Mongodb Java驱动程序更新内部Arraylist对象

无法使用Mongodb Java驱动程序更新内部Arraylist对象,java,mongodb,mongodb-query,mongo-java,Java,Mongodb,Mongodb Query,Mongo Java,我在mongodb数据库中有以下文档结构: { "_id" : ObjectId("52ec7b43e4b048cd48499b35"), "eidlist" : [ { "eid" : "64286", "dst" : NumberLong(21044), "score" : 0 }, { "eid" : "65077",

我在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 data=new BasicDBObject("$set",new BasicDBObject("eidlist.$.score",100));

此问题的解决方案是:

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

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

您是否对更新查询运行findOne以确保获得所需的文档?@adavis:是的,我尝试使用findOne,但该记录存在于数据库中。很抱歉,您的解决方案是正确的。我遇到的问题是数据类型。在数据库“eidlist.$.score”中字段是字符串,我正在更新查询中传递整数值..:)Aha。我太快了,也没看那个。接得好。
DBObject data=new BasicDBObject("$set",new BasicDBObject("eidlist.$.score",""+100));