用什么代替游标计数?

时间:2019-07-19 14:50:50

标签: python mongodb collections

我正在使用find从数据库中提取数据,并使用count检查是否有任何内容(或是否为空)。 count is deprecated. Use Collection.count_documents instead.令我大叫,但是当我更改它时,  'Cursor' object has no attribute 'count_documents'。我尝试将collection添加到db.find(),但仍然没有。

def stuff(x):
    return db['stuffs'].find({"stuff": x})

def check_for_stuff(x):
    things = stuff(x)
    if not things.count():
        return None

1 个答案:

答案 0 :(得分:1)

count_documents在集合级别起作用。因此,使用它的合适方法是通过将过滤器直接传递到db.collection.count_documents({"stuff": x})方法来使用count_documents查询数据库。

因此check_for_stuff可能类似于:

def check_for_stuff(x):
    count = db['stuffs'].estimated_document_count({"stuff": x}) //or db['stuffs'].count_documents({"stuff": x}) or db.collection.count_documents({"stuff": x}) depending on your use case
    ......Do what you need to do....

使用estimated_document_count可获得更好的性能。

Here是为什么您需要进行两次数据库调用