Как я могу получить данные из mongoDB между определенной датой (дата хранится как createdOn в нашем документе)?

Этот мой запрос -

  var Query = Offer
    .where('isDeleted').equals(false)
    .populate('country')
    .populate('state')
    .populate('city')
    .populate('store')
    .populate("createdBy")
    .populate("main_cat")
    .populate("grab_by")
    .populate("merchant_id")
    .sort('store_name');

if (typeof querydata.country != 'undefined' && querydata.country !== '') {
    Query.where('country').in(querydata.country)
}
if (querydata.state.length > 0) {

    querydata.state = querydata.state.split(",");
    Query.where('state').in(querydata.state);
}
if (querydata.city.length > 0) {
    querydata.city = querydata.city.split(",");
    Query.where('city').in(querydata.city);
}
//here i am trying to get data from start to end date
if ((req.query.start_date !== '' && typeof req.query.start_date !== 'undefined') && (req.query.end_date !== '' && typeof req.query.end_date !== 'undefined')) {
    var startdate = new Date(req.query.start_date);
    var enddate = new Date(req.query.end_date);
    //(startdate);
    enddate.setDate(enddate.getDate() + 1);
    Query.where(('createdOn').split('T')[0]).gte(startdate).lte(enddate);
}

В последнем условии if else я пытаюсь попасть между датой начала и датой окончания. Пожалуйста, подскажите, как мне написать свой запрос для того же. Должен ли я использовать для этого же momentJS. Основная цель этого кода - получить данные между датами, которые будут загружены пользователем в формате CSV.

Это схема документа: Как я могу получить данные из mongoDB между определенной датой (дата хранится как createdOn в нашем документе)?

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
0
4 795
1

Ответы 1

Вы можете использовать операторы $gte и $lte для фильтрации данных по диапазону дат.

В вашем случае для поиска в коллекции Offer запрос будет:

db.Offer.find({createdOn: {$gte: ISODate('START_DATE'),$lte: ISODate('END_DATE')}})

Поскольку вы используете MongoDB Compass, просто введите следующее в filter в поле фильтра: (на вкладке схемы)

{createdOn: {$gte: ISODate('START_DATE'),$lte: ISODate('END_DATE')}}

как мне написать это в javascript?

pratyush kumar 31.10.2018 08:24

зависит от используемого вами драйвера db. Я добавил команду Mongo Shell, а также команду фильтра Compass.

Mostafiz Rahman 31.10.2018 08:29

как мне написать его в javascript (NodeJS) как запрос (например, этот Query.where ('city'). in (querydata.city);)? Я хочу передать его в одном уже сделанном запросе, а не делать еще один.

pratyush kumar 31.10.2018 09:41

Другие вопросы по теме