在MongoDB中向子文档数组元素添加子文档数组元素

4

这是否可能? 我有一个集合C,其中包含属性数组A1。 每个属性都有一个子属性数组A2。

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


一个前后对比的示例文档,展示你所寻找的内容,会非常有帮助。 - JohnnyHK
3个回答

8

这里有一个例子。

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
}

6
如果你知道要插入的子文档的索引,那么怎样才能知道这个索引呢? - jcollum

0

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

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

0

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

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

我实际上还没有尝试过这个(我现在不在Mongo实例前面),我是根据记忆来说的,但那应该可以让你接近。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接