给定一个包含多个文档的集合:
{
sku: 'P001'
options: [
{
name: 'Size',
value: 'Large'
},
{
name: 'Color',
value: 'Forest Green'
},
{
name: 'Surface',
value: 'Rubber'
}
]
}
我想搜索“森林绿”'并用' Brilliant Green'取而代之。我试过这个:
Products.update(
{ options: { $elemMatch: { value: 'Forest Green' } } },
{ $set: { 'options.value': 'Brilliant Green' } },
{ multi: true }
)
但是我收到以下错误:
MongoError:不能使用part(options.value的选项)来遍历元素({options:[{name:" Size",value:" Large"},{名称:"颜色",值:" Forest Green"},{name:" Surface",value:" Rubber"}}})
看起来这应该有效。我做错了什么?
答案 0 :(得分:1)
我认为你应该像这样使用$
{ 'options.$.value': 'Brilliant Green' }
位置$运算符有助于更新包含嵌入文档的数组。使用位置$运算符以$运算符上的点表示法访问嵌入文档中的字段。 有关$ position操作符的更多信息,请参阅此link
db.collection.update(
{ <query selector> },
{ <update operator>: { "array.$.field" : value } }
)
由于