首页 > 解决方案 > 将元素添加到嵌入在 MongoDB 的子文档中的数组中

问题描述

我的 MongoDB 上有以下方案

{
    "weekday": 0,
    "hour":[
            {
                "hour": 14,
                "user": "user",
                "promoted": ["user1","user2","user3","user4"]
            },
            {
                "hour": 15,
                "user": "user",
                "promoted": ["user1","user2","user3","user4"]
            },
    ]
}

我想将单个元素添加到某个小时的“提升”数组中,例如,将“user5”添加到具有“小时”的子文档的“提升”数组中:14。

我已经学会了如何将新的子文档添加到小时数组中,但不知道如何将单个元素添加到已经存在的子文档的“提升”数组中。我怎么能那样做?

标签: jsonmongodb

解决方案


在这种情况下,您需要使用$. 在这里查看文档:https ://docs.mongodb.com/manual/reference/operator/update/positional/

但是,试试这个脚本:

db.yourCollection.update(
  {
    "hour.hour": 14
  },
  {
    $push: {"hour.$.promoted": "user5"}
  }
)

结果

{
    "_id" : ObjectId("60bb8e166cfda8327bbe08eb"),
    "weekday" : 0.0,
    "hour" : [ 
        {
            "hour" : 14.0,
            "user" : "user",
            "promoted" : [ "user1", "user2", "user3", "user4", "user5"]
        }, 
        {
            "hour" : 15.0,
            "user" : "user",
            "promoted" : ["user1", "user2", "user3", "user4"]
        }
    ]
}

推荐阅读