Python:从 mongodb 更新条目字段

Python: update entries field from mongodb

所以我 mongo db 我开始宿舍 docker 并输入几个条目:

(
id - int,
mod - boolean,
data - text,
)

所以我想从我的 data basemod=false:

中搜索 N 个条目
results = self.dbcol.find({'mod': False}).limit(3)

所以我的结果 return 3 个元素 对于此结果的每个条目,我想将 mod 字段更改为 true

这就是我的尝试:

for entry in results:
    entry['mod'] = True

这并没有改变我的领域。

您可以使用update_one

update = { "$set": { 'mod': True } }

for entry in results:
    self.dbcol.update_one({ _id: entry['_id'] }, update) 

如果 N 是一个大数字,则迭代游标不是一种高效的方法。 一种有效的方法是利用 pymongofind_one_and_update 方法并调用它 N 次,从而在 N 很大的情况下保持较低的磁盘使用率。

import pymongo
from pymongo.collection import ReturnDocument

for _ in range(0,N):
   returned_document = self.dbcol.find_one_and_update(filter={ 'mod': False }, update={"$set": { 'mod': True }}, return_document=ReturnDocument.AFTER)
   # return_document=ReturnDocument.AFTER --> returns modified document after updating it
   # return_document=ReturnDocument.BEFORE --> returns original document before updating it