无法使用Mongodb Java驱动程序更新内部Arraylist对象
我在mongodb数据库中有以下文档结构:无法使用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",
{
"_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));