MongoDB數組更新操作$addToSet和$each修飾符


一、定義$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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM