Python 检查mongodb中的文档是否具有find().limit()的正确方法是什么?
find_one将返回实际对象,但我听说它效率不高。find+limit仅返回游标对象,即使它没有找到匹配项。那么我如何在mongodb中实现find+limit呢?首先,不要对iterable here“hashtags”中的每个元素发出查询,而是应该使用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.
$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}})