我在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);
请帮我解决这个问题。我已经检查了所有传递给更新功能的参数。我认为更新逻辑有问题:(
答案 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中存储的内容兼容:)