将项目推送到MongoDB中的数组数组中

时间:2016-06-25 21:45:43

标签: mongodb

过去几个小时我一直在努力解决这个问题,无法让它正常工作。仔细阅读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运算符,看看我是否可以添加条件,但它只用于聚合。我不知道如何处理这个问题。我不确定这种嵌套数组是否可行。

1 个答案:

答案 0 :(得分:1)

你非常接近。 $ positional operator的关键部分是数组字段必须作为查询文档的一部分出现

试试这个:

db.Fix.update({_id: "H2RLYBniXZ7Fkszpu", "Data.questions.key":"E1eol1DS-"}, {$push: {"Data.questions.$.options": "option"}});