我已经在Stackoverflow上阅读了其他一些帖子,但没有找到任何“一般”答案。
假设我有一个结构,就像这样:
{
personsName: "Bob",
children: [
{childsName: "Alice", age: "9", weight: "40"}
{childsName: "Peter", age: "12", weight: "80"}
]
}
现在我想编辑Peters重量,因为它实际上是“45”
我试过了:
.update(
{ personsName: "Bob", children.childsName: "Peter"},
{
$set: {children: {weight :"45" } }
}
)
对我而言,这应该是有效的...将所有名为“Peter”且属于“Bob”的孩子的孩子体重更新为“45”...... 我看到了一些解决方案,他们通过索引更新数组,但我们假设我们不知道索引,我们想通过childs属性“childsName”更新。
这样做的一般方法是什么?
答案 0 :(得分:0)
如果您确定Bob不超过1个Peter,您可以使用positional operator,如下所示:
.update(
{ personsName: "Bob", "children.childsName": "Peter"},
{
$set: {"children.$.weight" :"45" }
}
)
请注意,操作员仅更新第一个匹配的子文档,并且仅更新为1级。