Как я могу получить уникальный счетчик бронирования?Например, если я перейду с даты «1970-01-01» и на дату «1970-01-05», то мне будет возвращено только 1. Потому что есть два бронирования, но на другую дату (один из 1970-01От -01 до 1970-01-02, а другое от "1970-01-03" до "1970-01-05").
Зарезервировано массив содержит все забронированные номера с от до до даты
Вот мои данные:
[
{
"_id": "5c0a17013d8ca91bf4ee7885",
"name": "ABC",
"reserved": [
{
"from": "1970-01-01",
"to": "1970-01-02",
"isCompleted": false
},
{
"from": "1970-01-03",
"to": "1970-01-05",
"isCompleted": false
},
{
"from": "2017-04-18",
"to": "2017-04-23",
"isCompleted": false
},
{
"from": "2018-01-29",
"to": "2018-01-30",
"isCompleted": false
}
]
}
]
Я пытался подсчитать, используя этот запрос, но он возвращает всеколичество не уникальное.
db.collection.aggregate([
{ $unwind: "$reserved" },
{
$match: { "reserved.from": { $lte: to }, "reserved.to": { $gte: from } }
},
{
$count: "total"
}
])
РЕДАКТИРОВАТЬ-1
Я не хочу уникальное _id .Как вы видите, внутри массива резервирования есть два резервирования от даты «1970-01-01» до «1970-01-05» (т.е. одно для «1970-01-01» - «1970-01-02», а другое было »1970-01-03 "к" 1970-01-05 "), но оба не в ту же дату.поэтому, когда я сделаю запрос, мне будет подсчитано 2 .Но на самом деле это было только одно в соответствии с моим требованием, потому что я хочу посчитать, сколько уникальных бронирований было сделано за период времени, который я передаю как запрос.См. Приведенный ниже пример
Итак, если мой зарезервированный массив был таким, то он даст мне счет 1 в качестве выходного значения For (передать от даты как «1970-01-01» и до даты как «1970-01»-05 ") запрос
"reserved": [
{
"from": "1970-01-01",
"to": "1970-01-02",
"isCompleted": false
},
{
"from": "1970-01-03",
"to": "1970-01-05",
"isCompleted": false
}
]
И, если мой зарезервированный массив был таким, то я получу счет 2 в качестве выходного значения For (переход от даты как" 1970-01-01 "и к дате как«1970-01-05») запрос
"reserved": [
{
"from": "1970-01-01",
"to": "1970-01-02",
"isCompleted": false
},
{
"from": "1970-01-03",
"to": "1970-01-05",
"isCompleted": false
},
{
"from": "1970-01-03",
"to": "1970-01-05",
"isCompleted": false
}
]