【发布时间】:2012-09-28 20:42:45
【问题描述】:
这可能吗? 我有一个集合 C,具有一组属性 A1。 每个属性都有一个子属性数组 A2。
如何将子文档添加到特定的 C.A1 子文档?
【问题讨论】:
-
前后示例文档说明您正在寻找的内容会有所帮助。
标签: mongodb
这可能吗? 我有一个集合 C,具有一组属性 A1。 每个属性都有一个子属性数组 A2。
如何将子文档添加到特定的 C.A1 子文档?
【问题讨论】:
标签: mongodb
这是一个例子。
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
}
【讨论】:
是的,这是可能的。如果您发布一个示例,我可以更具体地向您展示更新查询的样子。但这里有一个镜头:
db.c.update({ A1: value }, { $addToSet: { "A1.$.A2": "some value" }})
我实际上还没有尝试过这个(我现在不在 Mongo 实例前面)而且我正在记忆中,但这应该让你非常接近。
【讨论】:
是的,$push 可以用来做同样的事情。试试下面给定的代码。
db.c.update({ A1: value }, { $push: { "A1.$.A2": num }});
【讨论】: