Mongo条件为"键不存在"?

时间:2012-08-19 22:26:07

标签: python mongodb pymongo key-value

如果密钥==无或密钥不存在,我想使用条件查找文档。像这样:

myDoc = self.request.root.db.myDocs.find_one({
                          '$or': [
                              {'myKey' : $doesNotExist } ,
                              {'myKey' : None }
                            ]
                    })

我也希望能够通过这样的缺失键找到一个文档:

myDoc = self.request.root.db.myDocs.find_one( {'myKey' : $doesNotExist } )

我该如何做到这一点?

2 个答案:

答案 0 :(得分:24)

对于“if key exists”检查,使用.find()的{​​{3}}是significantly faster而不是find_one()

单个文档: cursor = db.myDocs.find({"mykey": {"$exists": True}}).limit(1)

多个文档: cursor = db.myDocs.find({"mykey": {"$exists": True}})

if cursor.count() > 0:
    keyExists = True
else:
    keyExists = False

答案 1 :(得分:15)

您可以使用以下方法测试不存在的密钥:

db.myDocs.find_one({'myKey': { '$exists': False }})

关于$exists operator

的Mongo文档