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

Javascript 将修改器应用于对象的多个元素,javascript,mongodb,Javascript,Mongodb,我的文档结构如下: { _id: ..., name: ..., keywords: { group_a: [1, 2, 5], group_b: [4, 7, 6] } } db.coll.update({_id: ...}, { $addToSet: { 'keywords.group_a': { $each: [9, 12, 17] } } }) 我知道我可以向关键字对象的一个元素添加元素,如下所示: { _id:

我的文档结构如下:

{
  _id: ...,
  name: ...,
  keywords: {
    group_a: [1, 2, 5],
    group_b: [4, 7, 6]
  }
}
db.coll.update({_id: ...}, {
  $addToSet: {
    'keywords.group_a': {
      $each: [9, 12, 17]
    }
  }
})
我知道我可以向
关键字
对象的一个元素添加元素,如下所示:

{
  _id: ...,
  name: ...,
  keywords: {
    group_a: [1, 2, 5],
    group_b: [4, 7, 6]
  }
}
db.coll.update({_id: ...}, {
  $addToSet: {
    'keywords.group_a': {
      $each: [9, 12, 17]
    }
  }
})
是否可以运行命令将相同的元素集添加到
组a
组b
?差不多

db.coll.update({_id: ...}, {
  $addToSet: {
    ['keywords.group_a', 'keywords.group_b']: {
      $each: [9, 12, 17]
    }
  }
})
这当然是无效的


我预先知道组的名称,但是“将它们添加到所有元素”解决方案同样好。

您可以使用单个
$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
    }
  }
})