У меня есть коллекция модель с ниже схеме:Вложенный массив соответствия дата не работает в Монго
{
"id":"122HSHDJS2333222222",
"name":"Item1",
"image":"",
"is_deleted":false,
"item_blocked_on":[
{
"start_date":"2017-02-15T18:30:00.000Z",
"end_date":"2017-02-24T18:30:00.000Z"
},
{
"start_date":"2017-01-16T18:30:00.000Z",
"end_date":"2017-01-26T18:30:00.000Z"
},
]
}
Выше модель представляет, что эти «элементы» заблокированы, для их запуска до конца даты, следовательно, не доступны для отображения
Теперь в моем случае USER отправит «from_date» и «end_date» с клиентской стороны. Что я хочу, запрос должен возвращать «элементы», которые «доступны» для отображения для даты начала и окончания работы пользователя.
Мой запрос, который возвращает неверный ответ: -
{
where:{
and:[
{
and:[
{
or:[{"item_blocked_on.start_date": {"gt": new Date(from_date)}},{"item_blocked_on.end_date": {"lt": new Date(from_date)}}],
},
{
or:[{"item_blocked_on.start_date": {"gt": new Date(end_date)}},{"item_blocked_on.end_date": {"lt": new Date(end_date)}}],
}
]
},
{
"is_deleted":false
}
]
}
};
Пожалуйста, дайте мне знать, если я не быть ясно, или делать что-то неправильно.
Благодаря
Спасибо за ответ, я думаю, что ваши требования неверны. «Элементы», которые зарезервированы для «диапазона дат», не должны появляться на выходе, не могут использовать '$ eq', поскольку время может отличаться. – BeingExpert
Ваш вопрос правильный, этот запрос работает для вас. database.find ({"item_blocked_on.start_date": {$ gte: start_date}, "item_blocked_on.end_date": {$ lt; end_date}}; также обновлен код –