Mongodb найти созданные результаты по дате сегодня

У меня есть этот запрос, чтобы получить результаты по месяцам. Но я хотел получить результаты сегодняшнего дня.

var start = new Date(2010, 11, 1);
var end = new Date(2010, 11, 30);

db.posts.find({created_on: {$gte: start, $lt: end}});

Каков наилучший способ сделать это?

3 ответа

Решение

Ваш объект даты начала должен содержать текущую дату и время часов в 00:00:00.000 (точность в миллисекундах) и установите часы для сегодняшней даты в 23:59:59.999:

var start = new Date();
start.setHours(0,0,0,0);

var end = new Date();
end.setHours(23,59,59,999);

Затем передайте измененные объекты даты как обычно в вашем запросе MongoDB:

db.posts.find({created_on: {$gte: start, $lt: end}});

Если вы используете библиотеку momentjs, это можно сделать с помощью startOf() а также endOf() методы текущего объекта даты, передавая строку 'day' в качестве аргументов:

var start = moment().startOf('day'); // set to 12:00 am today
var end = moment().endOf('day'); // set to 23:59 pm today

Решение

Чтобы найти результаты сегодняшней даты или данные между датами, используйте следующее:

NodeJS:

      // Date format YYYY-MM-DD
// Suppose you want to look for 1 day data between 2021-12-27 00:00:00 and 2021-12-28 00:00:00
let start = new Date("2021-12-27");
let end = new Date("2021-12-28");

// "created_on" can be any field with a date 
db.posts.find({created_on: {$gte: start, $lt: end}});

Это работает и в Mongo Shell :

      db.posts.find({created_on: {$gte: new ISODate("2021-12-27T00:00:00.000Z"), $lt: new ISODate("2021-12-28T00:00:00.000Z")}})

Другой путь:

      // 27th half day
db.posts.find({created_on: {$gte: new Date("2021-12-27T00:00:00.000Z"), $lt: new Date("2021-12-27T12:00:00.000Z")}})

Ссылка

find- Выбор / фильтрация данных

$gte- Больше / равно

$lt- Ниже, чем

      // Get Today Start Date and End Date
  let startOfDay = new Date();
  startOfDay.setHours(0, 0, 0, 0);
  let endOfDay = new Date();
  endOfDay.setHours(23, 59, 59, 999);

  // Get Yesterday Start Date and End Date
  let startOfYesterday = new Date();
  startOfYesterday.setDate(startOfYesterday.getDate() - 1);
  startOfYesterday.setHours(0, 0, 0, 0);
  let endOfYesterday = new Date();
  endOfYesterday.setDate(endOfYesterday.getDate() - 1);
  endOfYesterday.setHours(23, 59, 59, 999);

  // Get Last Month Start Date and End Date
  let startOfPreviousMonth = new Date();
  startOfPreviousMonth.setMonth(startOfPreviousMonth.getMonth() - 1);
  startOfPreviousMonth.setDate(1);
  startOfPreviousMonth.setHours(0, 0, 0, 0);
  let endOfPreviousMonth = new Date();
  endOfPreviousMonth.setMonth(endOfPreviousMonth.getMonth() - 1);
  let lastDayOfPreviousMonth = new Date(
    endOfPreviousMonth.getFullYear(),
    endOfPreviousMonth.getMonth() + 1,
    0
  );
  endOfPreviousMonth.setDate(lastDayOfPreviousMonth.getDate());
  endOfPreviousMonth.setHours(23, 59, 59, 999);

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