0

次のようなドキュメント構造があります。

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

次のように、オブジェクトの要素の1 つに要素を追加できることを知っています。keywords

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

同じ要素のセットをgroup_a and group_bに追加するために実行できるコマンドはありますか? 何かのようなもの

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

もちろん、これは有効ではありません。

グループの名前は事前に知っていますが、「すべての要素に追加する」ソリューションも同様に問題ありません。

4

1 に答える 1

0

$addToSet次のように、1つの演算子で複数のフィールドに影響を与えることができます。

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
    }
  }
})
于 2012-11-22T16:42:36.833 に答える