首页 > 技术文章 > pymongo cursor 非空判断 , 查询结果数量

lshan 2021-08-11 18:47 原文

今天处理游标非空判断,一直报错:

 

问题: DeprecationWarning: count is deprecated. Use Collection.count_documents instead

1.如果仅仅只需要数量:

当我使用pymongo查询出对应的cursor(find出的document的迭代器),然后查看查询出数据的数量时使用如下代码:

db = MongoClient(host='192.168.18.129', port=27017)
coll = db.dbname.collectionname
cursor = coll.find({'name': 'zhangsan'}).limit(10)
print(cursor.count()

弹出警报DeprecationWarning: count is deprecated. Use Collection.count_documents instead. print(cursor.count())

原因
这是由于mongodb现在迭代器数据的搜集Collection.count()方式已经被弃用,更高的版本不适用。已经使用Collection.count_documents来统计了。

 

正确的使用方法是这样的: 但是这不是我要的,如果仅仅想知道数量,可以

num = coll.count_documents({'name': 'zhangsan'})
print(num)  

2.查询结果,在遍历游标前,先判断数量

先强转为list, 再把list指向之前的变量
        user_cursor = coll.find({'name': 'zhangsan'}).limit(1000)
        user_list = list(user_cursor)
       #非空判断if len(user_list) == 0:
            print("can't get  user info ")
            flag = False
else:
for user in user_list:
print(user)

 

 

推荐阅读