#mongodb #mongodb-query
#mongodb #mongodb-запрос
Вопрос:
Кто-нибудь знает, как получить данные по месяцам с помощью запроса Mongodb? Например, если я хочу получить диапазон дат только за последний месяц или за последние два месяца, как мне это сделать? Я вижу примеры получения данных за последние N дней (например, за последние 5 дней с использованием этой новой даты (new Date().setDate(new Date().getDate()-5) или N часов, но не вижу примеров только для получения данных за последний N месяц. Спасибо,
Комментарии:
1. Использование moment.js для таких вещей — это делает вашу жизнь намного проще.
Ответ №1:
Да, вы можете извлекать данные на основе месяца, подобного этому.
new Date().setMonth(new Date().getMonth()-1)
или N
месяцы.
И вы также можете получить дату начала и окончания прошлого месяца, используя момент, подобный этому.
moment().subtract(1,'months').startOf('month').format('YYYY-MM-DD')
в нем будет указана дата начала предыдущего месяца, т.е. 2021-01-01
moment().subtract(1,'months').endOf('month').format('YYYY-MM-DD');
он предоставит дату окончания предыдущего месяца, т.е 2021-01-31
Комментарии:
1. Итак, это будет что-то вроде: $match: { ‘CreateDate’: { $ lt: новая дата (), $ gte: новая дата (новая дата ().setMonth(новая дата().getMonth()-1)) }} ? Похоже, это не работает, поскольку дает мне данные за текущий месяц.
2. Да, он найдет данные за текущий месяц, и если вы хотите найти данные за прошлый месяц, вам нужно выполнить поиск следующим образом. новая дата().setMonth(новая дата().getMonth()-2)
3. Сегодняшняя дата new Date() — 2021-02-26T17:37:32.209Z новая дата (setMonth(new Date().getMonth() — 1)) это предоставит вам примерно следующее 2021-01-26T17:31:21.175Z новая дата (setMonth(new Date().getMonth() -2)) это предоставит вам примерно следующее 2020-12-26T17:31:46.762Z Дата создания gte новая дата (setMonth(new Date().getMonth() — 2)) т.е. Вы получите дату, т.е. gte 2020-12-26T17:31:46.762Z.
4. @maitrythakkar — пожалуйста, отредактируйте свой ответ, чтобы предоставить дополнительные фрагменты кода, которые в настоящее время предоставляются в качестве комментариев. Очень сложно читать как комментарии (кроме того, учитывая количество комментариев, вы можете вскоре получить автоматическое предупреждение о том, что комментарии этого ответа превращаются в обсуждение). Также, пожалуйста, убедитесь, что ваш текст правильно отформатирован для удобства чтения.
5. Какова полная команда для использования moment() ? Я попробовал moment().subtract(1,’месяцы’).startOf(‘месяц’).format(‘ГГГГ-ММ-ДД’), и он не был выполнен, поскольку момент не определен.