检查列表是否为空pymongo

时间:2014-06-17 13:41:42

标签: python mongodb pymongo

我想在mongo中返回特定的id,这个列表名为list_followers,它位于数据库中。但是,数据库的某些文档的列表大小为零。因此,我获得了list_followers的key_error。

list_of_ids = []
for cursor in collection.find({ "list_followers" : { "$exists":True}}):
    id = cursor['_id']['uid']
    list_of_ids.append(id)
    followers = cursor['list_followers']
    print len(followers)

print len(list_of_ids)

如何仅使用大于零的list_followers查询游标?我尝试过{"list_followers":{"$gt":0}}{"list_followers":{"$gt":{"$size":0}}},但这不是我想要的。

3 个答案:

答案 0 :(得分:2)

试试这个

collection.find({'list_followers': {'$not': {'$size': 0}}}))

答案 1 :(得分:2)

您正在寻找$size运营商。您还应该在查询中使用$exists,因为没有它,它甚至会匹配没有字段list_followers的文档:

collection.find({'list_followers': {'$not' : {'$size' :  0}, '$exists' : True}})

答案 2 :(得分:1)

您可以检查$size是否等于0:

  

$ size运算符匹配任何具有元素数量的数组   由参数指定。

collection.find({"list_followers": {"$not": {'$size': 0}, "$exists": True}})

感谢@Christian P提供有关exists要求的说明。


或者,您可以检查第一个元素的existence

collection.find({"list_followers.0": {"$exists": True}})