Python 检查mongodb中的文档是否具有find().limit()的正确方法是什么?

Python 检查mongodb中的文档是否具有find().limit()的正确方法是什么?,python,mongodb,mongodb-query,pymongo,Python,Mongodb,Mongodb Query,Pymongo,find_one将返回实际对象,但我听说它效率不高。find+limit仅返回游标对象,即使它没有找到匹配项。那么我如何在mongodb中实现find+limit呢?首先,不要对iterable here“hashtags”中的每个元素发出查询,而是应该使用$in查询运算符 也就是说,您可以使用count方法检查集合“string”中的任何文档的值是否为数组 for hashtag in hashtags: existing_hashtag = hashtags_collection.

find_one将返回实际对象,但我听说它效率不高。find+limit仅返回游标对象,即使它没有找到匹配项。那么我如何在mongodb中实现find+limit呢?

首先,不要对iterable here“hashtags”中的每个元素发出查询,而是应该使用
$in
查询运算符

也就是说,您可以使用
count
方法检查集合“string”中的任何文档的值是否为数组

for hashtag in hashtags: 
    existing_hashtag = hashtags_collection.find({"string": hashtag}).limit(1)
    if existing_hashtag:
        hashtags_collection.update({"string": hashtag}, 
                                   {"$inc": {"popularity": 1}})                                                      
    else:
        new_hashtag = {"string": hashtag,
                       "popularity": 1}
        hashtags_collection.insert_one(new_hashtag)
最后也是最重要的一点,您不需要这里的
if/else
语句,只需让MongoDB通过使用批量操作和
upsert
选项来完成这项工作

总之,您的代码应该是这样的

collection.count({"string": {"$in": hashtags}})

首先,不要对iterable here“hashtags”中的每个元素发出查询,而是应该使用
$in
查询运算符

也就是说,您可以使用
count
方法检查集合“string”中的任何文档的值是否为数组

for hashtag in hashtags: 
    existing_hashtag = hashtags_collection.find({"string": hashtag}).limit(1)
    if existing_hashtag:
        hashtags_collection.update({"string": hashtag}, 
                                   {"$inc": {"popularity": 1}})                                                      
    else:
        new_hashtag = {"string": hashtag,
                       "popularity": 1}
        hashtags_collection.insert_one(new_hashtag)
最后也是最重要的一点,您不需要这里的
if/else
语句,只需让MongoDB通过使用批量操作和
upsert
选项来完成这项工作

总之,您的代码应该是这样的

collection.count({"string": {"$in": hashtags}})