如何搜索和替换MongoDB中一组文档内部的字符串?

时间:2015-03-26 06:46:30

标签: mongodb

给定一个包含多个文档的集合:

  {
    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"}}})

看起来这应该有效。我做错了什么?

1 个答案:

答案 0 :(得分:1)

我认为你应该像这样使用$

{ 'options.$.value': 'Brilliant Green' }

位置$运算符有助于更新包含嵌入文档的数组。使用位置$运算符以$运算符上的点表示法访问嵌入文档中的字段。 有关$ position操作符的更多信息,请参阅此link

db.collection.update(
   { <query selector> },
   { <update operator>: { "array.$.field" : value } }
)

由于