Pymongo с altlas $ ne не исключает все документы

#mongodb #pymongo #mongodb-atlas

#mongodb #pymongo #mongodb-atlas

Вопрос:

Я использую Pymongo для извлечения коллекции, и мне нужно исключить документы. В соответствии с параметрами исключения коллекции Mongo я использовал $ ne в своем запросе, а также исключил поля в своей проекции.

Похоже, это не работает. Я получаю документы с myVar, установленным в true.

 cursor = collection.find(
        { 'myVar' : { '$ne': 'true' }},
        { 
        'secret':  0,
        'Policies': 0
        }
        )
  

Обратите внимание, что мое значение является логическим, но если я сделаю, как написано ниже, я получу сообщение об ошибке :

 { '$ne': true }
  

Пожалуйста, помогите мне, эксперты! 🙂

Ответ №1:

Python использует True / False для логических операторов, поэтому вам следует использовать:

 cursor = collection.find(
        { 'myVar' : { '$ne': True }},
        { 
        'secret':  0,
        'Policies': 0
        }
        )
  

Запрос выглядит нормально, но вы также можете использовать альтернативный подход:

 cursor = collection.find(
        { 'myVar' : { '$in': [None, False] }},
        { 
        'secret':  0,
        'Policies': 0
        }
        )