过去几个小时我一直在努力解决这个问题,无法让它正常工作。仔细阅读Stackoverflow,Google,但仍无法在我的案例中正确实现。
基本上,MongoDB中的文档如下所示:
{
"_id": "H2RLYBniXZ7Fkszpu",
"userId": "FmMsoqXxJ8Nd4DRm5",
"Data": {
"name": "This is just a test.",
"summary": "sdadsdas",
"testId": "EyWcg1vS-",
"questions": [
{
"type": "test",
"key": "E1eol1DS-",
"options": []
}
],
}
}
我的目标是$push
并将项目放入"Data.questions.options"
数组,如果该数组中的特定对象key
等于我请求的输入。< / p>
我尝试过这么多种方式,包括使用$in
运算符,做这样的事情:
Db.fix.update({_id: "H2RLYBniXZ7Fkszpu"}, {$push: {"Data.questions.$.options": "option"}}); // Pushing the string "option" into the options array
我还在查看MongoDB的$cond
运算符,看看我是否可以添加条件,但它只用于聚合。我不知道如何处理这个问题。我不确定这种嵌套数组是否可行。
答案 0 :(得分:1)
你非常接近。 $ positional operator的关键部分是数组字段必须作为查询文档的一部分出现。
试试这个:
db.Fix.update({_id: "H2RLYBniXZ7Fkszpu", "Data.questions.key":"E1eol1DS-"}, {$push: {"Data.questions.$.options": "option"}});