MongoDB 數組操作


$push:向文檔數組中添加元素,如果沒有該數組,則自動添加數組。

db.users.insert({"name":"zhang"})
db.users.update({"name":"zhang"},{"$push":{"emails":"zhang@pocketdigi.com"}})
db.users.update({"name":"zhang"},{"$push":{"emails":"zhang@fwvga.com"}})

以上代碼,先創建name為zhang的用戶,再給該用戶加入郵箱,放到emails數組中.
$addToSet:功能與$push相同,區別在於,$addToSet把數組看作成一個Set,如果數組中存在相同的元素,不會插入。

db.users.update({"name":"zhang"},{"$addToSet":{"emails":"zhang@fwvga.com"}})
db.users.find()

{
"_id" : ObjectId("5a7183066b593101d819b479"),
"name" : "zhang",
"emails" : [
"zhang@pocketdigi.com",
"zhang@fwvga.com"
]
}

 

可以看到,並沒有兩個zhang@fwvga.com的郵箱.

$addToSet還可以與$each組合使用,一次添加多個值。

db.users.update({"name":"zhang"},{"$addToSet":{"emails":{"$each":["zhang@fwvga.com","zhang@163.com","zhang@qq.com"]}}})

 

$pop,與$push相對應,刪除數組里的元素

db.users.update({"name":"zhang"},{"$pop":{"emails":{'key':1}}});

key=1,從尾刪除,key=-1,從頭刪除

$pull 刪除指定元素,結合上面的例子,就是刪除指定的郵箱

db.users.update({"name":"zhang"},{"$pull":{"emails":"zhang@163.com"}});

修改指定位置的元素:
數組每個元素都有索引,從0開始。經過上面的一系列操作,zhang的文檔應該是這樣的:

{
"_id" : ObjectId("5a7183066b593101d819b479"),
"name" : "zhang",
"emails" : [
"zhang@pocketdigi.com",
"zhang@fwvga.com"
]
}

假如要把第一個郵箱修改成zhang@163.com:

db.users.update({"name":"zhang"},{"$set":{"emails.0":"zhang@163.com"}});

假如要把zhang@fwvga.com替換成zhang@qq.com,在並不知道zhang@fwvga.com索引時:

db.users.update({"name":"zhang","emails":"zhang@fwvga.com"},{"$set":{"emails.$":"zhang@qq.com"}});


免責聲明!

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



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