首页 > 解决方案 > 如何在 mongo db 的数组列表中添加字段

问题描述

{
    "_id" : "1",
    "teams" : 
    [ 
        {
            "type" : "local",
            "isEnabled" : "true",
            "names" : 
            [ 
                { "name": "kumar","Nationality":"indian","BirthPlace":"Goa","Age":"U25" },
                { "name": "kannan","Nationality":"indian","BirthPlace":"Kerala","Age":"U25"}
            ]
        },
        {
            "type" : "national",
            "isEnabled" : "true",
            "names" : 
            [ 
                { "name": "kumar","Nationality":"indian","BirthPlace":"Goa","Age":"U25" },
                { "name": "kannan","Nationality":"indian","BirthPlace":"Kerala","Age":"U25"}
            ]
        },
        {
            "type" : "international",
            "isEnabled" : "true",
            "names" : 
            [ 
                { "name": "kumar","Nationality":"indian","BirthPlace":"Goa","Age":"U25" },
                { "name": "kannan","Nationality":"indian","BirthPlace":"Kerala","Age":"U25"}
            ]
        },
    ]
}

我在 mongodb 集合中有多个格式相同的文档。我想将以下行附加到名称数组中,也仅适用于集合的每个文档中的“类型:本地”。我尝试了 $push 及其在所有团队数组中的附加,因为我发现很难仅为“type”添加此条件:“local”

{“姓名”:“杰克”,“国籍”:“印度人”,“出生地”:“卡纳塔克邦”,“年龄”:“U25”}

标签: arraysmongodbmongodb-querymongo-shellrobo3t

解决方案


您可以使用位置运算符:$[]

db.collection.update({
  "teams.type": "local"
},
{
  $push: {
    "teams.$[element].names": {
      "name": "jack",
      "Nationality": "indian",
      "BirthPlace": "Karnataka",
      "Age": "U25"
    }
  }
},
{
  arrayFilters: [
    {
      "element.type": "local"
    }
  ],
  multi: true
})

在这里试试


推荐阅读