2016-02-24 67 views
0

我有這個數據庫中的更新前:

{'id': 1, 'updating_this': 'a', 'removing_this': 'x'} 

現在我打電話更新:

item = {'id': 1, 'updating_this': b'} 
bulk.find({'id': item['id']}).update({'$set': item}) 

我所得到的結果是:

{'id': 1, 'updating_this': 'b', 'removing_this': 'x'} 

我想要的結果:

{'id': 1, 'updating_this': 'b'} 

所以基本上我想要update命令刪除所有缺少的字段,而不用$ unset操作指定它們,也就是完全覆蓋文檔。

我該如何解決這個問題?

更新得到了與replace_one()

回答

0

這個工作你應該直接在收集使用update$set

item = {'id': 1, 'updating_this': b'} 
bulk.update({'id': item['id']}, item) 

https://docs.mongodb.org/manual/reference/method/db.collection.update/#replace-a-document-entirely

+0

'ValueError異常:更新僅$ operators'這個作品不與'批量工作寫Operations'。我發現'replace_one'操作符可以完成它的工作,所以對於我來說這個問題得到了解答。儘管如此,感謝您的努力。 –

+0

該錯誤來自mongodb的舊版本。鏈接的文檔支持所提供的語法。 – autodidacticon

+0

我在3.2.1以及最新的pymongo模塊。 –