Pymongo только возвращает поле id, когда передается пустой объект - PullRequest
0 голосов
/ 23 мая 2018

Я работаю с Python и MongoDB.Для подключения к Монго я использую модуль Python Pymongo.Как я вижу из документации, которая очень абстрактна и мала.Кажется, что большинство вещей работает так же, как и в обычной коллекции MongoDB.Но есть странная часть, связанная с поиском запроса.

В Mongo Shell:

 db.my_collection.find({}, {})
 Results Array Fields:  { _id, field1, field1, field3 ..... etc} 
 //Notice:  Returning all Fields of each Document

В Python Shell:

 pymonogoMongoClient("localhost", 27017)['DB']['my_collection'].find({}, {})
 Results Array Fields:  {_id} 
 Notice  // Only Id is returning for all Docs

Я понимаю, что получаюжелаемых результатов, не указав empty {} во втором аргументе find, но это не то, что позволяет мой дизайн кода.Я создаю своего рода ORM для своего приложения Flask, где я должен написать общую функцию базы данных.И это не разрешено.

Будем благодарны за любую помощь или возможность получить все документы, передав аргумент.Заранее спасибо

1 Ответ

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

Согласно документации вот почему это происходит: проекция

(необязательно): список имен полей, которые должны быть возвращены в результирующем наборе, или указание в виде словарейполя для включения или исключения.Если проекция является списком, «_id» всегда будет возвращено.Используйте dict для исключения полей из результата (например, projection = {'_ id': False}).

Однако вы можете сделать следующее:

if projection == {}:
    projection = None

pymonogoMongoClient("localhost", 27017)['DB']['my_collection'].find({}, projection)
...