Как я могу вернуть одно свойство из объекта в запросе mongoDB? - PullRequest
2 голосов
/ 20 марта 2020

У меня есть запрос, который выглядит следующим образом:

listProjectQry = [
    {
      $match: {
        city: city
      }
    },
    {
      $project: {
        _id: 0,
        rating: 1,
        title: 1,
        amenities: 1
      }
    }
  ]

Это работает нормально, но объект удобства на самом деле отображается в массив объектов удобства, которые сами содержат несколько полей. Прямо сейчас я получаю весь набор удобств, но мне интересно, смогу ли я сделать массив только идентификаторов удобств и отослать это обратно клиентам.

Цель состоит в том, чтобы сделать запрос более производительный и занимает меньше времени. Может быть, эта оптимизация не поможет сделать это быстрее?

1 Ответ

1 голос
/ 20 марта 2020

Вы можете использовать либо точечную запись:

{
    $project: {
        _id: 0,
        rating: 1,
        title: 1,
        "amenities._id": 1
    }
}

, которая будет возвращать массив объектов с одним свойством _id, либо использовать $ map для получения массива значений

amenityIds: {
    $map: {
        input: "$amenities",
        in: "$$this._id"
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...