Mongo中更新總結

2022-09-05 13:51:13 字數 1354 閱讀 7031

mongo中的更新其實也可以當做新增來使用

mongo中跟新有幾種方式

s**e、update、upsert

執行s**e的時候如果這個文件有_id這個引數,s**e 會呼叫 upsert,否則會呼叫 insert

upsert修改速度要比update快

使用upsert如果修改的這個資料不存在,則會建立一條新的資料

各種修改器

$inc 、 $set

其中 $inc 只能修改數值型別的資料,修改別的型別的資料會報錯

db.ansheng.update(,},true)           upsert

db.ansheng.update(,})             update

db.ansheng.s**e()   s**e

使用s**e的時候要注意s**e修改的時候,相當於把這個文件,給替換了。

比如:上面的這個s**e語句,修改目標資料的時候只會修改aaaaa這個字段,別的欄位都會給刪掉

使用s**e的時候如果前面的查詢引數不是 _id ,他就會建立乙個新的文件

上面是三種最簡單的修改,都是只修改乙個字段

用s**e 的時候會影響到別的字段

用update和upsert就不會影響到別的字段

陣列的修改

修改 book 中的資料

db.ansheng.update(,},true)    通過陣列的下標修改這個陣列

db.ansheng.update(,})       通過陣列的下標修改這個陣列

db.ansheng.s**e()  修改整個文件

批量更新

db.ansheng.update(,},true,true)

update 的第四個引數是用來控制是否批量更新的。

內嵌文件的修改

, ]

}

現在有這麼乙個文件,對list中的資料進行一系列的操作

db.ansheng.s**e(,]})

總結s**e、update、upsert

s**e只能進行整體的修改

update和upsert都可以實現區域性的修改(必須加上 $set 修改器,如果不加會修改文件中全部的資料)

update修改的時候如果修改的內容相同則不會修改

upsert不管相不相同都會修改

因為update 修改的時候會先到資料庫中查詢一下,如果相同就不會修改,所以update 的效率就會比 upsert 低一點

所以個人感覺

upsert的效率最高

update的效率其次

s**e的效率最低

Mongo用法(不斷更新)

根據 id查詢 from pymongo import mongoclient from bson.objectid import objectid client mongoclient db client.pyspider projectdb get pro id db.projectdb.fin...

mongo更新與刪除集合中的字段python

因為業務需求,原本的mysql關係型資料庫不能再繼續沿用,所以公司選擇了mongo作為儲存。mongo的crud 增刪改查 還是很簡單的,因為mongo本身用的是dict型別,即key value。但是在做專案中還是有問題把我困住了,所以我想要把這些問題寫出來,以防以後犯錯。我在mongo有這樣一張...

Mongo簡單查詢總結

mongo 簡單查詢 db.ansheng.findone 返回第一條匹配到的資料 db.ansheng.findone db.ansheng.find 最簡單的查詢 db.ansheng.find 返回匹配到的資料 db.ansheng.find limit 1 根據查詢條件 find 返回指定條...