Как получить временные интервалы доступности в агрегированном запросе mongodb? - PullRequest
0 голосов
/ 13 июля 2020

Я новичок в MongoDB и застрял в запросе. Пожалуйста, помогите мне.

У меня есть две коллекции с именами staffMembers и membersTimeSlots, ответы которых следующие:

Вот ответ коллекции staffMembers:

{
    "_id" : ObjectId("5f0c42d86b559419d62efe46"),
    "services" : [
        ObjectId("5ebbfd29b117f50dac1039e4")
    ],
    "listing" : ObjectId("5ebbf95fb117f50dac1039d1"),
    "user" : ObjectId("5b923025ff5da86cbd425813"),
    "availabilitySeasons" : [
        {
            "from" : ISODate("2020-07-13T05:30:00.000+05:30"),
            "to" : ISODate("2021-07-13T05:30:00.000+05:30"),
            "operationalHours" : [
                {
                    "day" : "Monday",
                    "hours" : [
                        {
                            "from" : "11:00",
                            "to" : "16:00"
                        }
                    ]
                },
                {
                    "day" : "Wednesday",
                    "hours" : [
                        {
                            "from" : "11:00",
                            "to" : "15:00"
                        }
                    ]
                },
                {
                    "day" : "Friday",
                    "hours" : [
                        {
                            "from" : "10:00",
                            "to" : "17:00"
                        }
                    ]
                },
                {
                    "day" : "Sunday",
                    "hours" : [
                        {
                            "from" : "10:00",
                            "to" : "18:00"
                        }
                    ]
                }
            ]
        }
    ],
    "name" : "Steve Rogers",
    "bookingInterval" : 30,
    "closeSalesBefore" : 0,
    "created" : ISODate("2020-07-13T16:47:44.873+05:30"),
    "updated" : ISODate("2020-07-13T16:47:44.873+05:30"),
}

Вот ответ на коллекцию membersTimeSlots:

/* 1 createdAt:7/13/2020, 4:47:45 PM*/
{
    "_id" : ObjectId("5f0c42d99c058304f7a5616a"),
    "date" : ISODate("2020-07-13T05:30:00.000+05:30"),
    "dayOfWeek" : 1,
    "staffMember" : ObjectId("5f0c42d86b559419d62efe46"),
    "startTime" : 660
},

/* 2 createdAt:7/13/2020, 4:47:45 PM*/
{
    "_id" : ObjectId("5f0c42d99c058304f7a5616b"),
    "date" : ISODate("2020-07-13T05:30:00.000+05:30"),
    "dayOfWeek" : 1,
    "staffMember" : ObjectId("5f0c42d86b559419d62efe46"),
    "startTime" : 675
}

конец и т. Д.

У меня есть следующие параметры для поиска доступных временных интервалов:

"services": ObjectId("5ebbfd29b117f50dac1039e4"),
"listing" : ObjectId("5ebbf95fb117f50dac1039d1"),
"monthStartDate": "2020-07-01",
"monthEndDate": "2020-07-31",
"currentTime": 1594650192,
"bookingInterval": 30

Мне нужны свободные временные интервалы. Пожалуйста, помогите мне в этом вопросе.

...