将修改器应用于对象的多个元素

时间:2012-11-22 16:29:20

标签: javascript mongodb

我有这样的文档结构:

{
  _id: ...,
  name: ...,
  keywords: {
    group_a: [1, 2, 5],
    group_b: [4, 7, 6]
  }
}

我知道我可以添加元素到一个keywords对象的元素,如下所示:

db.coll.update({_id: ...}, {
  $addToSet: {
    'keywords.group_a': {
      $each: [9, 12, 17]
    }
  }
})

我是否可以运行命令将同一组元素添加到group_a group_b?像

这样的东西
db.coll.update({_id: ...}, {
  $addToSet: {
    ['keywords.group_a', 'keywords.group_b']: {
      $each: [9, 12, 17]
    }
  }
})

当然无效。

我事先知道了这些组的名称,但是“将它们添加到所有元素”解决方案同样没问题。

1 个答案:

答案 0 :(得分:0)

您可以使用单个$addToSet运算符影响多个字段,如下所示:

db.coll.update({_id: ...}, {
  $addToSet: {
    'keywords.group_a': {
      $each: [9, 12, 17]
    },
    'keywords.group_b': {
      $each: [9, 12, 17]
    }
  }
})

为了保持干爽,你当然可以这样做:

var each = { $each: [9, 12, 17] };
db.coll.update({_id: ...}, {
  $addToSet: {
    'keywords.group_a': each,
    'keywords.group_b': each
    }
  }
})