Как получить одно значение поля в коллекции Mongodb - PullRequest
0 голосов
/ 14 января 2020

Я хочу получить все даты в mycollection в MongoDb

Имя базы данных is: mydb

Название коллекции : mycollection

Document1:

"Date":"10-01-2020", "timeslot1":"11-12" ,"timeslot2":null ,"timeslot3":null ,"timeslot4":null 

Document2:

 "Date":"11-01-2020", "timeslot1":null ,"timeslot2":null ,"timeslot3":null ,"timeslot4":null 

Document3:

 "Date":"14-01-2020", "timeslot1":null ,"timeslot2":null ,"timeslot3":null ,"timeslot4":null

Я хочу выводить все как.

{10-01-2020, 11-01-2020, 14-01-2020}

Я пытаюсь этот запрос:

x = mydb.mycollection.find({}, {"Date": 1})
  print(x)

Я получаю вывод, как это

<pymongo.cursor.Cursor object at 0x000002120610EF98>

Ответы [ 4 ]

0 голосов
/ 20 января 2020
my_cursor = mydb.mycollection.find()
for x in my_cursor:
    print('{0}'.format(x['Date']))
0 голосов
/ 14 января 2020

вы можете использовать list для преобразования вашего курсора в список.

x = mydb.mycollection.find({}, {"Date": 1})
y = list(x)

print(y)
0 голосов
/ 14 января 2020
mydb.mycollection.find({}, {"Date": 1})

и, если вы хотите из нескольких таблиц, то вы должны использовать агрегатные функции

0 голосов
/ 14 января 2020

В основном .find() вернул бы курсор - вот почему ваш вывод print(x) равен <pymongo.cursor.Cursor object at 0x000002120610EF98>, вам нужно выполнить итерацию для доступа к документам из него, также я добавил _id:0 в проекции, чтобы явно исключить поле _id, которое по умолчанию включено. Это для l oop будет печатать значения x, пока курсор не исчерпан, попробуйте это:

for x in mydb.mycollection.find({}, {_id :0, "Date": 1}):
  print(x)

В случае, если вам нужны разные значения даты:

for x in mydb.mycollection.distinct('Date'):
    print(x)
...