定义
$each$each修饰符可与$addToSet操作符和$push操作符一起使用。结合
$addToSet操作符将多个值添加到数组<field>中(前提是<field>中不存在这些值)。{ $addToSet: { <field>: { $each: [ <value1>, <value2> ... ] } } } 与
$push操作符一起使用,将多个值附加到数组<field>。{ $push: { <field>: { $each: [ <value1>, <value2> ... ] } } } $push操作符可以将$each修饰符与其他修饰符一起使用。有关$push可用修饰符的列表,请参阅修饰符。
行为
从 MongoDB 5.0 开始,更新操作符按字典顺序处理具有基于字符串的名称的文档字段。具有数字名称的字段按数字顺序处理。详情请参阅更新操作符行为。
示例
将$each 与$push 操作符结合使用
以下示例将 [ 90, 92, 85 ] 的每个元素附加到文档的 scores 数组,其中 name 字段等于 joe:
db.students.updateOne( { name: "joe" }, { $push: { scores: { $each: [ 90, 92, 85 ] } } } )
将$each 与$addToSet 操作符结合使用
集合 inventory 包含以下文档:
db.inventory.insertOne ( { _id: 2, item: "cable", tags: [ "electronics", "supplies" ] } )
然后,以下操作使用带有$addToSet $each修饰符的 操作符向tags 大量添加多个元素:
db.inventory.updateOne( { _id: 2 }, { $addToSet: { tags: { $each: [ "camera", "electronics", "accessories" ] } } } )
该操作仅将 "camera" 和 "accessories" 添加到 tags 数组。"electronics" 已在数组中:
{ _id: 2, item: "cable", tags: [ "electronics", "supplies", "camera", "accessories" ] }