問題:在執行pymongo的update語句時,提示了ValueError: update only works with $ operators
腳本:db.user.update_one({"name":"zhao"},{"name":"qian"})
原因:update語句需要用$進行操作,加上$set即可,db.user.update_one({"name":"zhao"},{"$set":{"name":"qian"}})
這句話的意思是找到了{"name":"zhao"}的字段就將其更新為{"name":"qian"},如果找不到就添加一條的參數是upsert=False。
update語句可以直接用db.user.update(),這個語句可以更改多條,發現如果只更改一項的時候沒有添加"$set"也沒有報錯。(update_one只能更改一條數據)
注意這里是指更改找到的第一條,如果是要更改全部的話需要指定multi=True,注意True的T一定要是大寫,如db.user.update({"name":"sun"},{"$set":{"name":"sun2"}},multi=True)
注:$操作符,可以用$set、$inc、$push進行更新操作,網上有人測試過使用$set和$inc時間區別不大,但是$push時間慢於前兩者
(db是我指定的數據庫,user是我指定的聚合的名字)