Агрегация MongoDB с поиском $, чтобы показать только результат одного поля - PullRequest
1 голос
/ 28 мая 2020

Я пытаюсь получить только объект pasien_docs в результате поиска, я использую match, lookup и addfield, но я хочу, чтобы результат отображал только массив pasien_docs:

Pasien.aggregate(
  [
    {
      $match: {
        _id: ObjectId(id)
      }
    },
    {
      $lookup: 
      {
          from: "data",
          localField: "_id",
          foreignField: "idPasien",
          as: "pasien_docs"
      }
    },
    { '$addFields': {
      'pasien_docs': {
        '$map': {
          'input': '$pasien_docs',
          'in': {
            'ecg': '$$this.ecg',
            'date': '$$this.date'
          }
        }
      }
    }}
  ]
)

, и результат:

    "data": [
    {
        "_id": "5e08a79fe34fa20a302f659f",
        "username": "rizkarahayus",
        "nama": "Rizka Rahayu",
        "__v": 0,
        "pasien_docs": [
            {
                "ecg": null,
                "date": "2020-01-21T05:22:01.901Z"
            },
            {
                "ecg": 1.03,
                "date": "2020-01-21T05:22:02.979Z"
            },

, но я хочу, чтобы результат показывал только массив pasien_docs, например:

"pasien_docs": [
            {
                "ecg": null,
                "date": "2020-01-21T05:22:01.901Z"
            },
            {
                "ecg": 1.03,
                "date": "2020-01-21T05:22:02.979Z"
            },

, вы можете мне помочь? спасибо ...

1 Ответ

1 голос
/ 28 мая 2020

Вы можете просто использовать $project и указать включение pasien_docs вычисляемого поля, подавление поля _id, например:

Pasien.aggregate(
  [
    {
      $match: {...}
    },
    {
      $lookup: {...}
    },
    { 
     '$addFields': {...}
    },
    {
      $project: { _id: 0, pasien_docs: 1 }
    }
  ]
)
...