#javascript #database #mongodb #mongodb-query #aggregation-framework
#javascript #База данных #mongodb #mongodb-запрос #агрегация-фреймворк
Вопрос:
‘$ eq’ не работает с датами. Кто-нибудь может мне помочь в этом.
Итак, что я пытаюсь сделать, я хочу искать документы на основе нескольких дат. В документе есть поле startdate, по которому я хочу выполнить поиск. Если я дам простой запрос, он восстановит документ. Но когда я дам массив дат в ‘$ eq’, он не работает. Может кто-нибудь указать на ошибку или переформатировать этот запрос для работы.
db.getCollection('campaigngrid').find({
startdate: { '$eq': [ ISODate('2021-02-05'), ISODate('2021-02-12') ] },
// startdate: ISODate('2021-02-05'),
active: true
})
Поэтому я дважды проверил запрос. И документ тоже там. Когда я просто выполняю поиск с помощью простого запроса, он извлекает документы (которые я только что прокомментировал).
Заранее спасибо.
Комментарии:
1. Пробовали ли вы какие-либо другие операторы запроса сравнения , кроме
$eq
?
Ответ №1:
Я думаю, вы пытаетесь найти, где дата ISODate (‘2021-02-05’) или ISODate (‘2021-02-12’)
Но ваша проблема в том,
$eq: [ISODate('2021-02-05'), ISODate('2021-02-12')]
найдет, где startdate = [ISODate(‘2021-02-05’), ISODate(‘2021-02-12’)];
Чтобы найти, где startdate равен хотя бы одной из ваших дат, что-то вроде этого:
db.getCollection('campaigngrid').find({
startdate: { '$in': [ ISODate('2021-02-05'), ISODate('2021-02-12') ] },
active: true
})
Комментарии:
1. Приветствую вас @YashJaiswal . Это случается со всеми нами.