{{1}}
find_one将返回实际对象但我听说效率不高。 find + limit仅返回游标对象,即使它找不到匹配项。那么如何在mongodb中实现find + limit呢?
答案 0 :(得分:0)
首先,不要在 iterable 中为每个元素发出查询" hashtags"相反,您应该使用$in
查询运算符。
话虽这么说,您可以使用count
方法检查您的集合中的任何文档"字符串"的值是否是您的数组。
collection.count({"string": {"$in": hashtags}})
最后也是最重要的一点,您不需要if/else
语句,只需让MongoDB通过批量操作和upsert
选项为您完成工作。
总之,您的代码应如下所示。
from pymongo import UpdateOne
bulk_operations = [UpdateOne({'string': value}, {'$inc': {'popularity': 1 }}, upsert=True)
for value in hashtags]
hashtags_collection.bulk_write(bulk_operations)