Как получить заданный c элемент в суб-коллекции с помощью мангусты - PullRequest
0 голосов
/ 24 апреля 2020

Могу ли я получить экспертное заключение о том, как я смогу эффективно получить 1 элемент в подколлекции вместе с другими свойствами в родительском объекте?

{
    "_id" : ObjectId("5ea2dd85a82b4f304020eed1"),
    "hotelId" : "",
    "name" : "Ted-Hotel",
    "address" : "Hongkong",
    "hotelInfo" : "Ted Sample hotel",
    "introduction" : "Sample Hotel",
    "selectedValidityToDate" : "2020-05-31T12:28:00Z",
    "selectedValidityFromDate" : "2020-04-22T12:28:00Z",
    "sneakInPrice" : 2000,
    "childNoBedPrice" : 1000,
  "surcharges" : [ 
        {
            "_id" : ObjectId("5ea2dd85a82b4f304020eed9"),
            "description" : "WEEKEND",
            "surchargeStartDate" : "2020-04-24T12:36:15.525Z",
            "surchargeEndDate" : "2020-04-24T12:36:15.525Z",
            "surcharge" : 1000
        }, 
        {
            "_id" : ObjectId("5ea2dd85a82b4f304020eed8"),
            "description" : "SINGLE_TRAVELER",
            "surchargeStartDate" : "2020-04-24T12:36:00Z",
            "surchargeEndDate" : "2020-04-25T12:36:00Z",
            "surcharge" : 1000
        }, 
        {
            "_id" : ObjectId("5ea2dd85a82b4f304020eed7"),
            "description" : "PEAK_SEASON",
            "surchargeStartDate" : "2020-05-01T12:36:00Z",
            "surchargeEndDate" : "2020-06-30T12:36:00Z",
            "surcharge" : 1500
        }
    ]
   }

Предполагая, что я хочу вернуть все свойства, но за дополнительную плату я заинтересован только в возврате второго товара?

В настоящее время у меня есть такой код в Пн goose:

async function fetchHotelRoomAbroadBySurchargeId(roomId) {
  const hotelByRoomId = await HotelAbroadData.findOne(
    { 'surcharges._id': surchargeId},
    {
      hotelId: 1,
      name: 1,
      sneakInPrice: 1,
      surcharges: 1
    }
  ).exec();
  return hotelByRoomId;
}

Заранее спасибо!

...