4

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

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

4

3 回答 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
}
于 2012-10-09T02:32:43.877 回答
0

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

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

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

于 2012-10-08T20:06:30.637 回答
0

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

db.c.update({ A1: value }, { $push: { "A1.$.A2": num }});
于 2015-10-13T14:14:42.857 回答