Монго условно для "ключа не существует"?
Я хочу найти документ с использованием условного, если ключ == None или если ключ не существует. Что-то вроде этого:
myDoc = self.request.root.db.myDocs.find_one({
'$or': [
{'myKey' : $doesNotExist } ,
{'myKey' : None }
]
})
Я также хотел бы найти документ только с помощью отсутствующего ключа, например:
myDoc = self.request.root.db.myDocs.find_one( {'myKey' : $doesNotExist } )
Как я могу это сделать?
Ответы
Ответ 1
Для проверки наличия "если существует ключ" использование .find()
значительно быстрее, чем 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
Ответ 2
Вы можете проверить ключ, который не существует:
db.myDocs.find_one({'myKey': { '$exists': False }})
Документация Mongo о $exist operator