【问题标题】:Add subdocument array element to subdocument array element in mongoDB将子文档数组元素添加到 mongoDB 中的子文档数组元素
【发布时间】:2012-09-28 20:42:45
【问题描述】:

这可能吗? 我有一个集合 C,具有一组属性 A1。 每个属性都有一个子属性数组 A2。

如何将子文档添加到特定的 C.A1 子文档?

【问题讨论】:

  • 前后示例文档说明您正在寻找的内容会有所帮助。

标签: mongodb


【解决方案1】:

这是一个例子。

db.docs.insert({_id: 1, A1: [{A2: [1, 2, 3]}, {A2: [4, 5, 6]}]})

如果你知道要插入的子文档的索引,可以用点表示法,中间有索引(从0开始):

db.docs.update({_id: 1}, {$addToSet: {'A1.0.A2': 9}})

这会导致:

{
    "A1" : [
        {
            "A2" : [
                1,
                2,
                3,
                9
            ]
        },
        {
            "A2" : [
                4,
                5,
                6
            ]
        }
    ],
    "_id" : 1
}

【讨论】:

  • "如果您知道要插入的子文档的索引," -- 如果要插入它,您如何知道索引?
【解决方案2】:

是的,这是可能的。如果您发布一个示例,我可以更具体地向您展示更新查询的样子。但这里有一个镜头:

db.c.update({ A1: value }, { $addToSet: { "A1.$.A2": "some value" }})

我实际上还没有尝试过这个(我现在不在 Mongo 实例前面)而且我正在记忆中,但这应该让你非常接近。

【讨论】:

    【解决方案3】:

    是的,$push 可以用来做同样的事情。试试下面给定的代码。

    db.c.update({ A1: value }, { $push: { "A1.$.A2": num }});
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-07-29
      • 2015-08-12
      • 1970-01-01
      • 1970-01-01
      • 2018-07-29
      • 2014-04-01
      • 2015-12-22
      相关资源
      最近更新 更多