使用find()。limit()检查mongodb中的文档的正确方法是什么?

时间:2017-01-28 13:42:52

标签: python mongodb mongodb-query pymongo

{{1}}

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

1 个答案:

答案 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)