Есть ли способ предотвратить печать полей {} 1 и печатать внутреннее значение? - PullRequest
1 голос
/ 03 мая 2019

Я запрашиваю mongodb, используя mongodb compass, и не могу напечатать значение в табличной форме, оно всегда печатает {} 1 Fields. Я хочу напечатать значение внутри в виде таблицы.То же самое происходит, когда я использую mongoexport

Here is the original json structure

Here is the query structure

These are the results

Ответы [ 2 ]

1 голос
/ 03 мая 2019

Вы должны использовать конвейер агрегации, как я покажу вам на изображении ниже: enter image description here

Другой вариант - использовать Robo3T (Ex Robomongo) со следующим запросом:

db.getCollection('test').aggregate([ { '$addFields': {'birthdayValue': '$formAnswer.birthday.value'}}, {'$project': {'_id': 0, 'roleID': 1, 'birthdayValue': 1}}])

Вы получите что-то, как показывает другое изображение: enter image description here

1 голос
/ 03 мая 2019

Это потому, что проект в команде find() не нормализует структуру объекта. Таким образом, поле вывода, возвращаемое для дня рождения, все равно будет объектом только с 1 полем. Что-то вроде {roleID: 9, formAnswers : { birthday : { value : "06/29/1981 17:04:29"}}}

Чтобы получить ожидаемый вывод, вы должны использовать конвейер агрегации, который может сделать его полем верхнего уровня. Что-то вроде db.coll.aggregate({$project : {roleID:1, birthday : "$formAnswers.birthday.value"}})

...