Mongo Query, который всегда возвращает ноль документов - PullRequest
0 голосов
/ 15 мая 2018

Можно написать запрос, который всегда возвращает все элементы в коллекции, используя в качестве примера pymongo:

MongoClient()["database"]["collection"].find({})

Однако из-за структуры моего кода мне бы очень хотелосьчтобы иметь возможность построить запрос, который выполняет обратное действие, запрос, который обязательно вернет ноль элементов во всех ситуациях:

MongoClient()["database"]["collection"].find(null_query)

Как я могу определить null_query, чтобы это было правильно?

1 Ответ

0 голосов
/ 15 мая 2018

Вы можете запросить любое поле в пустом списке.Кажется разумным использовать поле _id для этого:

db.collection.find({_id: {$in: []}})

Если вы хотите более короткий запрос, вам вообще не нужно использовать поле _id:

db.collection.find({_:{$in:[]}})

Альтернатива, если версия MongoDB> = 3.4:

Возможно, можно также спросить, если поле _id не существует, что было предложено @ Marco13:

db.collection.find({_id: {$exists: false}})

Однако,это предполагает, что все документы имеют поле _id, что не обязательно верно для версий MongoDB до 3.4, где коллекция может быть создана с помощью db.createCollection("mycol", {autoIndexID : false}), поэтому всем документам не было автоматически предоставлено поле _id.

...