Ошибка OperationFailure при использовании проекции с запросом для поля массива через find () - PullRequest
1 голос
/ 11 июля 2019

Я пытаюсь использовать метод find () для запроса всех документов в моей коллекции, у которых есть поле массива с именем 'branch', а затем проецируется с использованием '$', так что включается только первый элемент массива,Тем не менее, он говорит, что «позиционный оператор (branch. $) Требует соответствующего поля в спецификаторе запроса» (полное сообщение показано ниже).

Для некоторой справочной информации я использую PyMongo 3.8.0 и подключился кнаша база данных через SSL, без каких-либо ошибок в других запросах, которые я пробовал до сих пор.

for doc in db.employees.find({'branches': {'$exists': 'true'}},
                             {'branches.$': 1}):
    pprint(doc)

Я ожидал, что смогу увидеть все документы, которые имеют поле массива ветвей, показывая только _id'поле и первый элемент' ветви ', но я вижу это:

Traceback (most recent call last):
  File "C:/Users/imehta/IdeaProjects/MongoDB/intro.py", line 51, in <module>
    {'branches.$': 1}):
  File "C:\Users\imehta\.conda\envs\MongoDB\lib\site-packages\pymongo\cursor.py", line 1225, in next
    if len(self.__data) or self._refresh():
  File "C:\Users\imehta\.conda\envs\MongoDB\lib\site-packages\pymongo\cursor.py", line 1162, in _refresh
    self.__send_message(g)
  File "C:\Users\imehta\.conda\envs\MongoDB\lib\site-packages\pymongo\cursor.py", line 1010, in __send_message
    helpers._check_command_response(first)
  File "C:\Users\imehta\.conda\envs\MongoDB\lib\site-packages\pymongo\helpers.py", line 155, in _check_command_response
    raise OperationFailure(msg % errmsg, code, response)
pymongo.errors.OperationFailure: positional operator (branches.$) requires corresponding field in query specifier

Process finished with exit code 1
...