Подтвердить что ты не робот

Монго условно для "ключа не существует"?

Я хочу найти документ с использованием условного, если ключ == None или если ключ не существует. Что-то вроде этого:

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

Я также хотел бы найти документ только с помощью отсутствующего ключа, например:

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

Как я могу это сделать?

4b9b3361

Ответ 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