MongoDB/Mongoose: как запросить все данные, которые были созданы сегодня?

вторник, 6 августа 2024 г.

Для того чтобы сделать выборку документов за сегодняшний день в Mongoose, необходимо использовать операторы $gte (больше или равно) и $lt (меньше). Таким образом, мы можем задать диапазон дат от начала текущего дня до начала следующего дня.

Вот пример кода на Node.js с использованием Mongoose:

import mongoose from 'mongoose';

// Пример схемы и модели
const { Schema, model } = mongoose;

const exampleSchema = new Schema({
  name: String,
  createdAt: { type: Date, default: Date.now }
});

const ExampleModel = model('Example', exampleSchema);

// Функция для получения документов за сегодняшний день
const getTodayDocuments = async () => {
  const startOfDay = new Date();
  startOfDay.setHours(0, 0, 0, 0); // Устанавливаем время на начало дня

  const endOfDay = new Date();
  endOfDay.setHours(24, 0, 0, 0); // Устанавливаем время на начало следующего дня

  try {
    const documents = await ExampleModel.find({
      createdAt: {
        $gte: startOfDay,
        $lt: endOfDay
      }
    });
    console.log(documents);
  } catch (err) {
    console.error(err);
  }
};

// Подключение к MongoDB и выполнение функции
const run = async () => {
  try {
    await mongoose.connect('mongodb://localhost:27017/yourdatabase', {
      useNewUrlParser: true,
      useUnifiedTopology: true
    });
    console.log('Connected to MongoDB');
    await getTodayDocuments();
  } catch (err) {
    console.error('Error connecting to MongoDB', err);
  } finally {
    mongoose.connection.close();
  }
};

run();

В этом примере:
- Мы используем `import` для загрузки `mongoose` и деструктурируем `Schema` и `model` из `mongoose`.
- В функции `getTodayDocuments` мы задаем начало и конец дня, используя `Date` и метод `setHours`.
- `await` используется для асинхронного выполнения операций подключения к базе данных и выполнения запроса.
-Функция `run` подключается к базе данных, выполняет выборку документов и затем закрывает соединение.

Fullstack-разработчик в Москве
Александр
Fullstack-разработчик в Москве

Профессиональная разработка веб-приложений на Node.js с использованием Express. Создание, продвижение, поддержка и обслуживание Веб-проектов. Эффективно, прибыльно.