我的文档对象看起来像这样
{
"_id" : ObjectId("5b62cfac2046e98de373399c"),
"hindi" : {
"confirmed" : false,
"assigned_to" : "xyz+4@abc.com",
"candidates" : [
{
"candidate_id" : "9262c520-9640-11e8-bfbf-292ac77d55f9",
"value" : "स्क्रॉल कैसे करें ?",
"createdAt" : NumberInt(1533207154),
"createdBy" : "xyz+4@abc.com",
"warningList" : [],
"comments" : [
"Correction कैसे स्क्रॉल करें",
"added ?"
]
},
{
"candidate_id" : "297bb060-9642-11e8-ac2d-93ac27f5ee90",
"value" : "स्क्रॉल कैसे करें ?",
"createdAt" : NumberInt(1533207154),
"createdBy" : "xyz+4@abc.com",
"warningList" : [],
"comments" : [
"Correction कैसे स्क्रॉल करें",
"added ?"
]
}
]
}
我的目标是通过candidates
在candidate_id
数组中找到一个特定项目,并更新comment
字段。
这是我正在尝试使用MongoDB positional operator($)
的查询,但收到错误Unsupported projection option: $set: { hindi.candidates.$.comments: [] }
db.getCollection("strings").update({_id: ObjectId("5b62cfac2046e98de373399c"),"hindi.candidates.candidate_id": "297bb060-9642-11e8-ac2d-93ac27f5ee90"}, {$set :{"hindi.candidates.$.comments" : []}})
答案 0 :(得分:1)
您需要在此处使用$elemMatch
来匹配数组内部
db.getCollection("strings").update(
{
"_id": ObjectId("5b62cfac2046e98de373399c"),
"hindi.candidates": { "$elemMatch": { "candidate_id": "297bb060-9642-11e8-ac2d-93ac27f5ee90" } }
},
{ "$set": { "hindi.candidates.$.comments" : [] }}
)