{
"_id": ObjectId("552cd780e4b042752e540df5"),
"source": [
{
"bookid": ObjectId("552cd77e31456e192df6ad8e"),
"isActive": false
},
{
"bookid": ObjectId("552cd77e31456e192df6ad8a"),
"isActive": true
}
]
}
我需要更新上述文档,其中条件为source.bookid
为ObjectId("552cd77e31456e192df6ad8e")
,并将该特定文档字段isActive
更新为false
。所以,我需要的结果输出为
{
"_id": ObjectId("552cd780e4b042752e540df5"),
"source": [
{
"bookid": ObjectId("552cd77e31456e192df6ad8e"),
"isActive": false
},
{
"bookid": ObjectId("552cd77e31456e192df6ad8e"),
"isActive": true
}
]
}
任何人都可以告诉我,如何执行此更新查询?还可以检索子文档数组中包含所有“isActive”为false的所有文档吗?
答案 0 :(得分:0)
使用mongo update documentation嵌套密钥更新使用$elemMatch
查询,如下所示
db.collectionName.update({"source":{"$elemMatch":{"bookid":ObjectId("552cd77e31456e192df6ad8e")}}},{"$set":{"source.$.isActive":false}})
如果多个文档更新,则使用此mongo update添加多个真实。