агрегат mongodb для получения данных между 2 датами - PullRequest
0 голосов
/ 21 октября 2018
let params = JSON.parse(req.query.params);
let dateFrom = params.dateFrom;
let dateTo = params.dateTo;
dateFrom = dateFrom.replace(/T/g, ' '); //parse the data to the format accepted by mongodb
dateFrom = dateFrom.replace(/Z/g, ' ');
dateTo = dateTo.replace(/T/g, ' ');
dateTo = dateTo.replace(/Z/g, ' ');



productSchema.aggregate([
    {
        $match: { 
            productExist: true,
        }
    },
    {
        $match: { 
            productTimeStamp: {
                $gte: dateTo,
                $lte: dateFrom
            } 
        }
    },        
    { 
        $lookup:
            {
                from: 'supplierschemas',
                localField: 'supplierId',
                foreignField: '_id',
                as: 'supplier'
            }
    },
    { 
        $lookup:
            {
                from: 'brandschemas',
                localField: 'brandId',
                foreignField: '_id',
                as: 'brand'
            }
    },
    { 
        $lookup:
            {
                from: 'categoryschemas',
                localField: 'categoryId',
                foreignField: '_id',
                as: 'category'
            }
    })]

У меня есть запрос выше, который получает данные из mongodb, используя экспресс.Я хочу выбрать 2 даты между ними.Но приведенный выше код не работает, когда я добавил следующие строки кодов:

    {
        $match: { 
            productTimeStamp: {
                $gte: dateTo,
                $lte: dateFrom
            } 
        }
    }, 

Как точно я могу добавить это утверждение, чтобы получить данные за 2 даты?

1 Ответ

0 голосов
/ 21 октября 2018

Дата по умолчанию MongoDB ISODate.Не делайте replace на даты.

Вместо этого просто передайте их как новые Даты:

let params = JSON.parse(req.query.params);

productSchema.aggregate([{
    $match: {
      productExist: true,
    }
  },
  {
    $match: {
      productTimeStamp: {
        $gte: new Date(params.dateFrom),
        $lte: new Date(params.dateTo)
      }
    }
  },
  {
    $lookup: {
      from: 'supplierschemas',
      localField: 'supplierId',
      foreignField: '_id',
      as: 'supplier'
    }
  },
  {
    $lookup: {
      from: 'brandschemas',
      localField: 'brandId',
      foreignField: '_id',
      as: 'brand'
    }
  },
  {
    $lookup: {
      from: 'categoryschemas',
      localField: 'categoryId',
      foreignField: '_id',
      as: 'category'
    }
  })]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...