1. 程式人生 > >MongoDB 數組操作

MongoDB 數組操作

列操作 () mongod ket mail div 結合 zha 存在

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

db.users.insert({"name":"zhang"})
db.users.update({"name":"zhang"},{"$push":{"emails":"[email protected]"}})
db.users.update({"name":"zhang"},{"$push":{"emails":"[email protected]"}})

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

db.users.update({"name":"zhang"},{"$addToSet":{"emails":"[email protected]"}})
db.users.find()


可以看到,並沒有兩個[email protected]的郵箱.

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

db.users.update({"name":"zhang"},{"$addToSet":{"emails":{"$each":["[email protected]","[email protected]","[email protected]"]}}})

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

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

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

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

db.users.update({"name":"zhang"},{"$pull":{"emails":"[email protected]"}});

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

{ "_id" : ObjectId("51a16b02d2ded250f4aab338"), "emails" : [ "[email protected]", "[email protected]" ], "name" : "zhang" }

假如要把第一個郵箱修改成[email protected]:

db.users.update({"name":"zhang"},{"$set":{"emails.0":"[email protected]"}});

假如要把[email protected]替換成[email protected],在並不知道[email protected]索引時:

db.users.update({"name":"zhang","emails":"[email protected]"},{"$set":{"emails.$":"[email protected]"}});

MongoDB 數組操作