Mongodb - не удается найти определенные поля во встроенном документе

Я запрашиваю документы, и я просто хочу получить 2 конкретных поля, но по какой-то причине вложенное значение не возвращается.

    Watcher.find(query, { id: 1, 'address.current': 1 }).exec((err, result) => {
 if (err) {
   ////
 } else {
   res.status(200).json(result);
 }});

В этом случае я не получаю никакого значения для 'address.current'. Но когда я устанавливаю его так, он возвращает полный объект «адрес».

Watcher.find(query, { id: 1, address: 1 }).exec((err, result) => {
   if (err) {
     ////
   } else {
     res.status(200).json(result);
   }
});

Документ, например:

{
    "_id": "5a51080e939530fdc0c77f9a",
    "address": {
        "street": 10,
        "zip_code": null,
        "current": false
    }
}

Желаемый результат:

{
    "_id": "5a51080e939530fdc0c77f9a",
    "addres.current": false
    }
}

Пожалуйста, порекомендуйте.

не могли бы вы добавить пример вашего документа?

RidgeA 10.08.2018 16:22

Обновленный вопрос.

David Faizulaev 10.08.2018 16:27

Работает ... mongoplayground.net/p/XS0NXXXCfpX

Ashh 10.08.2018 18:49

@AnthonyWinzlet, спасибо, работает. Есть ли способ получить результат не как объект. Как, например: 'address.current' вместо 'address: {current:}'

David Faizulaev 12.08.2018 09:15

не могли бы вы обновить свой вопрос и показать желаемый результат?

Ashh 12.08.2018 11:19

@AnthonyWinzlet, обновлено.

David Faizulaev 12.08.2018 12:02
1
6
36
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете попробовать ниже агрегирование

db.collection.aggregate([
  { "$match": query }},
  { "$project": {
    "addressCurrent": "$address.current"
  }}
])

Попробуйте здесь

Другие вопросы по теме