可以使用 update()
方法更新集合的文檔,它接受三個參數(shù):
- 適配文檔
- 更新文檔
- 可選參數(shù)
它接受的參數(shù)與查詢方法一致。
默認(rèn) update()
方法只更新單個文檔略号,使用 multi
參數(shù)更新所有匹配的文檔因谎。
不能更新 _id 字段。
更新最頂層的字段杨赤,查詢 name 為 Juni 的文檔茧痕,然后使用 $set 運(yùn)算符更新 cuisine 字段和用 $currentDate 運(yùn)算符更新 lastModified 字段值為當(dāng)前日期野来。
db.restaurants.update(
{ "name" : "Juni" },
{
$set: { "cuisine": "American (New)" },
$currentDate: { "lastModified": true }
}
)
使用 .
更新嵌套的字段
db.restaurants.update(
{ "restaurant_id" : "41156888" },
{ $set: { "address.street": "East 31st Street" } }
)
更新多個文檔
db.restaurants.update(
{ "address.zipcode": "10016", cuisine: "Other" },
{
$set: { cuisine: "Category To Be Determined" },
$currentDate: { "lastModified": true }
},
{ multi: true}
)
替換整個文檔
要替換整個文檔,可以在第二個參數(shù)傳遞與原始文檔所有字段值不一致的新文檔踪旷,但要注意 _id
是不可變的曼氛,如果要傳遞 _id
,需要與原來的值一致令野。
db.restaurants.update(
{ "restaurant_id" : "41704620" },
{
"name" : "Vella 2",
"address" : {
"coord" : [ -73.9557413, 40.7720266 ],
"building" : "1480",
"street" : "2 Avenue",
"zipcode" : "10075"
}
}
)
更新或插入
如果 update()
的第一個參數(shù)沒有匹配的文檔舀患,那么默認(rèn)他不會做任何操作∑疲可以在第三個參數(shù)傳遞 upsert聊浅,使 update()
的行為變成有適配文檔時更新和沒有適配文檔時插入數(shù)據(jù)。