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 返回指定條...