MongoDB如何在嵌套结构中查找和更新数据

时间:2019-07-11 09:04:54

标签: mongodb

我的mongoDB(v3.6.4)遇到问题,下面是我现在的数据。我需要在“ second_list”中查找(并更新)某个元素的“文本”值,即返回“ hello”并将其更改为“ hello world”。

{
  "_id": ObjectId("xxxxxxxxxxxxx"),
  "top_list": [
    {
      "create_time": "2019-06-10 15:56:46",
      "second_list": [
        {
          "name": "v1",
          "text": "hello"
        },
        {
          "name": "v2",
          "text": "good morning"
        },
        {
          "name": "v3",
          "text": "bye"
        }
      ]
    }
  ]
}

我已经尝试过该查询

    db.myCollection.find(
            {'top_list.second_list.name':'v1'},
            {"top_list.second_list":1,"_id":0}
        )

,但它返回了整个“ second_list”。我想要的应该是

{
          "name": "v1",
          "text": "hello"
}

或只是字符串“ hello”。

2 个答案:

答案 0 :(得分:1)

此语法可帮助我查找和更新值

db['myCollection'].findAndModify({query:{_id: ObjectId("xxxxxxxxxxxxx")}, update: {$set: {"top_list.second_list.0.text":"someNewText"}}})

top_list.second_list.0.text中的0是您要访问的数组索引

答案 1 :(得分:0)

Mongodb的函数名为FindAndModify

,您的查询应该是这样

和此link中的$数组运算符将有助于修改您想要的内容

像$ elemmatch