一、定義$addToSet
$addToSet添加值到一個數組中去,如果數組中已經存在該值那么將不會有任何的操作。
$addToSet的操作格式如下:
{ $addToSet: { <field1>: <value1>, ... } }
二、考慮一個集合文檔test,包含一個數組字段letters
{ _id: 1, letters: ["a", "b"] }
如下操作添加數組["c", "d"]到字段letters
db.test.update(
{ _id: 1 },
{ $addToSet: {letters: [ "c", "d" ] } }
)
現在letters字段包含數組["c","d"]作為一個字段
{ _id: 1, letters: [ "a", "b", [ "c", "d" ] ] }
如果想將數組中的每個元素分開添加到letters字段中,可以使用$each修飾符。
二、考慮文檔集合inventory包含如下文檔
{ _id: 1, item: "polarizing_filter", tags: [ "electronics", "camera" ] }
如下操作添加元素 accessories到文檔集合的tags數組字段中,由於 accessories不是存在於數組中
db.inventory.update(
{ _id: 1 },
{ $addToSet: { tags: "accessories" } }
)
如下的操作 $addToSet不會對已經存在的 "camera"元素產生任何影響在tags數組中
db.inventory.update(
{ _id: 1 },
{ $addToSet: { tags: "camera" } }
)
三、$each修飾符
你可以使用$addToSet操作符和$each修飾符配合使用,$each修飾符允許$addToSet操作符添加多個元素到數組字段中。
集合inventory有如下文檔:
{ _id: 2, item: "cable", tags: [ "electronics", "supplies" ] }
如下的操作使用$addToSet操作符和$each修飾符添加多個元素到tags數組字段中:
db.inventory.update(
{ _id: 2 },
{ $addToSet: { tags: { $each: [ "camera", "electronics", "accessories" ] } } }
)
上面的操作只會將 "camera"和"accessories"元素添加到tags數組字段中,由於"electronics"元素已經存在於數組中了。
{
_id: 2,
item: "cable",
tags: [ "electronics", "supplies", "camera", "accessories" ]
}
————————————————
版權聲明:本文為CSDN博主「艾米莉Emily」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/yaomingyang/article/details/78697113