Я пытаюсь использовать метод 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