【发布时间】:2014-12-20 09:38:42
【问题描述】:
我需要检查 find 语句是否返回非空查询。
我正在做的事情如下:
query = collection.find({"string": field})
if not query: #do something
然后我意识到我的if 语句从未执行过,因为find 返回一个游标,查询是否为空。
因此我检查了documentation 并找到了两种可以帮助我的方法:
-
count(with_limit_and_skip=False)其中(来自描述):返回此查询的结果集中的文档数。
这似乎是一个很好的检查方法,但这意味着我需要计算 游标中的所有结果都知道它是否为零,对吗?有点贵?
-
retrieved其中(来自描述):到目前为止检索到的文档数。
我在一个空查询集上对其进行了测试,它返回零,但事实并非如此 明确它的作用,我不知道它是否适合我。
那么,这是检查find() 查询是否返回空集的最佳方法(最佳实践)?上述方法之一是否适合此目的?那么性能呢?还有其他方法吗?
要明确一点:我需要知道查询是否为空,并且我想找到光标在性能和 Pythonic 方面的最佳方式。
【问题讨论】:
-
这取决于你想用它做什么
-
@VincentBeltman 我只需要知道查询是否使用该光标返回了某些内容。
-
无论如何,您已经在您的 collection.find() 方法中执行查询。 “count”方法只是返回 find 方法返回给光标的文档数。您只需执行“如果 query.count > 0:”
-
@vintastic 我明白了,但性能如何?
count是否需要重新扫描所有找到的结果才能给我一个数字? -
@boh 游标是指向查询结果集的指针。所以不需要重新扫描。
标签: python mongodb pymongo mongodb-query