我在一个mongodb集合中有一个find查询,并且希望这个查询也更新一个字段......类似于这样......
db = pymongo.MongoClient(DB_HOST)[COLLECTION][Product]
new_posts = db.find({'type':{'$ne':'overview'}, 'indice':0, 'thread_id':{'$nin':front_db_ids}, 'updated':{'$exists':False}},{'_id': 0}) + {{'$set': {'updated':'yes'}}, multi=True
我找到了findandmodify方法,但找不到任何如何使用它的示例...
提前感谢您的帮助!
4条答案
按热度按时间gzjq41n41#
请注意,此答案中的方法已被弃用。有关详细信息,请参阅Sid Holland's answer。
请参阅文档,例如
或
find_and_modify
,根据文件,Returns either the object before or after modification based on new parameter. If no objects match the query and upsert is false, returns None. If upserting and new is false, returns {}
例如:
a5g8bdjr2#
对于那些在Google上搜索
find_and_modify
后发现它被弃用(我想是在PyMongo 3.0版中)的人来说,替代品是find_one_and_update
。假设您有一个名为
counters
的集合,并希望递增其中一个计数器:如果希望返回新文档,而不是更新前的原始文档,则要传递的参数是
new
,而不是大多数文档所述的returnNewDocument
:i2loujxw3#
由于find_and_modify已弃用,请改用find_one_and_update方法,使用find_one_and_update方法的return_document参数返回更新的文档或未更新的文档。
这里return_document被设置为ReturnDocument.AFTER,它将返回更新后的文档;如果它被设置为BEFORE,它将返回更新前的文档。
busg9geu4#
使用
update_one
更新collection
中的单个文档,如果条件不匹配,则将upsert
设置为True
以创建新的document
。