2

集計でこのようにフィルタリングしたい。これはマングース クエリの例です。アグリゲーションでやりたいのと同じこと。私がやりたいことは、2016-06-01T22:52:46Z と 2016-06-02T22:52:46Z の間のすべての測定値と他の値を取得することです

Measurement
  .find({})
  .or([{
    'date': {
      '$gte': ISODate('2016-06-01T22:52:46Z'),
      '$lte': ISODate('2016-06-02T22:52:46Z')
    }
  }, {
    'date': {
      '$gte': ISODate('2016-06-10T22:52:46Z'),
      '$lte': ISODate('2016-06-11T22:52:46Z')
    }
  }, {
    'date': {
      '$gte': ISODate('2016-06-14T22:52:46Z'),
      '$lte': ISODate('2016-06-15T22:52:46Z')
    }
  }, {
    'date': {
      '$gte': ISODate('2016-06-26T22:52:46Z'),
      '$lte': ISODate('2016-06-27T22:52:46Z')
    }
  }])
  .exec();

これは私が試したものですが、同じ仕事をしませんでした。そしてIDEは重複したキーを「日付」と言います

db.measurements.aggregate([{
  $match: {
    $or: [{
      date: {
        '$gte': ISODate('2016-06-01T22:52:46Z'),
        '$lte': ISODate('2016-06-02T22:52:46Z')
      },
      date: {
        '$gte': ISODate('2016-06-10T22:52:46Z'),
        '$lte': ISODate('2016-06-11T22:52:46Z')
      },
      date: {
        '$gte': ISODate('2016-06-14T22:52:46Z'),
        '$lte': ISODate('2016-06-15T22:52:46Z')
      },
      date: {
        '$gte': ISODate('2016-06-26T22:52:46Z'),
        '$lte': ISODate('2016-06-27T22:52:46Z')
      }
    }]
  }
}]);
4

1 に答える 1

2

データの例はありますか?このコードを試してください:

db.measurements.aggregate([{
  $match: {
    $or: [
    { date: {
        '$gte': ISODate('2016-06-01T22:52:46Z'),
        '$lte': ISODate('2016-06-02T22:52:46Z')
      }},
      { date: {
        '$gte': ISODate('2016-06-10T22:52:46Z'),
        '$lte': ISODate('2016-06-11T22:52:46Z')
      }},
      { date: {
        '$gte': ISODate('2016-06-14T22:52:46Z'),
        '$lte': ISODate('2016-06-15T22:52:46Z')
      }},
      { date: {
        '$gte': ISODate('2016-06-26T22:52:46Z'),
        '$lte': ISODate('2016-06-27T22:52:46Z')
      }}
    ]
  }
}]);
于 2016-07-13T19:13:31.037 に答える