欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

MongoDB使用$addToSet向數(shù)組中添加元素的操作代碼

 更新時間:2024年06月16日 10:36:32   作者:威贊  
使用方法$addToSet, 向數(shù)組中添加不存在的元素,如果元素已經(jīng)存在于目標(biāo)數(shù)組當(dāng)中,則使用$addToSet不會更新當(dāng)前文檔,本文給大家介紹了MongoDB使用$addToSet向數(shù)組中添加元素的操作代碼,感興趣的小伙伴跟著小編一起來看看吧

定義

使用方法$addToSet, 向數(shù)組中添加不存在的元素。如果元素已經(jīng)存在于目標(biāo)數(shù)組當(dāng)中,則使用$addToSet不會更新當(dāng)前文檔。

語法

按照下面的形式使用$addToSet操作符。

{$addToSet: {<field1>: <value1>, ...}}

當(dāng)向嵌入文檔或數(shù)組中添加元素時,使用點操作符。

行為

  • 自mongodb5.0開始,UPDATE操作按照字段名稱的字典順序更新字段。當(dāng)字段中包含數(shù)字時,按照數(shù)字順序依次更新字段。當(dāng)然,對一個文檔的多個字段操作,是原子性的。
  • $addToSet只能保證不會向數(shù)組當(dāng)中插入已經(jīng)存在的數(shù)據(jù)。而不會對數(shù)組中已經(jīng)存在的重復(fù)元素產(chǎn)生影響。也不會對數(shù)組中元素的順序產(chǎn)生影響。
  • mongodb 5.0版本以后,向$addToSet傳入空表達式({ })時,mongodb不再拋出錯誤。空表達式不會修改字段值 ,也不會在oplog中,添加新的操作記錄。
  • 使用$addToSet向不存在的數(shù)組字段添加數(shù)組元素時,mongodb會創(chuàng)建該字段并將元素插入到該字段當(dāng)中。
  • 不可以向非數(shù)組字段插入元素,否則會報錯。
  • 向數(shù)組字段插入的是一個數(shù)組時,$addToSet方法將指定的數(shù)組作為一個元素插入到數(shù)組當(dāng)中。
  • 向數(shù)組字段插入文檔時,mongodb會判斷即將插入的文檔與數(shù)組當(dāng)中已有的元素是否嚴(yán)格相等。包括字段名稱,字段值,字段順序等。

應(yīng)用

向非數(shù)組字段插入數(shù)據(jù)報錯

創(chuàng)建pigments集合并插入數(shù)據(jù)

db.pigments.insertOne({_id: 1, colors: "blue, green, red"})

使用$addToSet向colors字段插入數(shù)組元素

db.pigments.updateOne({_id:1}, {$addToSet: {"colors": "mauve"}})
WriteError({
	"index" : 0,
	"code" : 2,
	"errmsg" : "Cannot apply $addToSet to non-array field. Field named 'colors' has non-array type string",
	"op" : {
		"q" : {
			"_id" : 1
		},
		"u" : {
			"$addToSet" : {
				"colors" : "mauve"
			}
		},
		"multi" : false,
		"upsert" : false
	}
})

向數(shù)組字段插入數(shù)組

創(chuàng)建集合alphabet

db.alphabet.insertOne({_id: 1, letters: ["a", "b"]})

向letters字段,插入數(shù)組["c", "d"]

db.alphabet.updateOne({_id: 1}, {$addToSet:{"letters": ["c", "d"]}})

查看插入結(jié)果

db.alphabet.find()
{
	"_id" : 1,
	"letters" : [
		"a",
		"b",
		[ "c", "d" ] 
	]
}

將數(shù)組作為一個整體插入到數(shù)組letters中。若期望將數(shù)組["c", "d"]的每一個元素插入字段letters中,使用$each操作符。

db.alphabet.updateOne({_id:1}, {$addToSet: {"letters":{$each: ["c", "d"]}}})

向數(shù)組字段中插入數(shù)據(jù)

創(chuàng)建集合inventory并插入數(shù)據(jù)

db.inventory.insertOne(
    {_id:1, item: "polarizing_filter", tags: ["electronics", "camera"]}
    )

向字段tags插入元素

db.inventory.updateOne(
    {_id:1},
    {$addToSet: {tags: "accessories"}}
    )

查詢插入結(jié)果

向數(shù)組中插入已存在的元素

db.inventory.updateOne(
    {_id:1},
    {$addToSet: {tags: "camera"}}
    )

因為"camera"已經(jīng)存在于數(shù)組tags當(dāng)中,所以沒有數(shù)據(jù)更新。

{
	"acknowledged" : true,
	"matchedCount" : 1,
	"modifiedCount" : 0
}

以上就是MongoDB使用$addToSet向數(shù)組中添加元素的操作代碼的詳細(xì)內(nèi)容,更多關(guān)于MongoDB $addToSet添加元素的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評論