4 метода получения записей двухдневной давности из MongoDB

Чтобы получить записи двухдневной давности из MongoDB, вы можете использовать различные методы в зависимости от ваших конкретных требований и структуры ваших данных. Вот несколько подходов с примерами кода:

  1. Использование объекта даты:

    const twoDaysAgo = new Date();
    twoDaysAgo.setDate(twoDaysAgo.getDate() - 2);
    const query = { createdAt: { $gte: twoDaysAgo } };
    const result = await db.collection('yourCollection').find(query).toArray();
    console.log(result);

    Этот код создает объект Date, представляющий два дня назад, и использует его в запросе для получения записей с полем createdAt, большим или равным этой дате.

    Этот код создает объект Date, представляющий два дня назад, и использует его в запросе для получения записей с полем createdAt, большим или равным этой дате.

  2. Использование библиотеки Moment.js:

    const moment = require('moment');
    const twoDaysAgo = moment().subtract(2, 'days').toDate();
    const query = { createdAt: { $gte: twoDaysAgo } };
    const result = await db.collection('yourCollection').find(query).toArray();
    console.log(result);

    В этом примере мы используем библиотеку Moment.js, чтобы вычесть два дня из текущей даты и преобразовать ее в объект Date. Остальная часть кода аналогична предыдущему методу.

  3. Использование платформы агрегации MongoDB:

    const twoDaysAgo = new Date();
    twoDaysAgo.setDate(twoDaysAgo.getDate() - 2);
    const pipeline = [
    { $match: { createdAt: { $gte: twoDaysAgo } } },
    { $project: { _id: 0, field1: 1, field2: 1 } }
    // Specify the fields you want to retrieve
    ];
    const result = await db.collection('yourCollection').aggregate(pipeline).toArray();
    console.log(result);

    Этот метод использует структуру агрегации MongoDB для фильтрации записей на основе поля createdAtи проецирования в результат только нужных полей.

  4. Использование строки ISODate:

    const twoDaysAgo = new Date(Date.now() - 2 * 24 * 60 * 60 * 1000).toISOString();
    const query = { createdAt: { $gte: new Date(twoDaysAgo) } };
    const result = await db.collection('yourCollection').find(query).toArray();
    console.log(result);

    В этом примере мы вычисляем строку ISODate, представляющую два дня назад, используя текущую метку времени. Затем мы преобразуем его обратно в объект Dateдля запроса.