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-разработчик в МосквеПрофессиональная разработка веб-приложений на Node.js с использованием Express. Создание, продвижение, поддержка и обслуживание Веб-проектов. Эффективно, прибыльно.