MongoDB查询找到最近两天的最大值

时间:2019-12-14 08:05:19

标签: mongodb mongoose mongodb-query

如果我想从集合的所有记录中搜索最高温度,那么下面的查询是完美的

 db.posts3.aggregate([{$group:{ _id: "maximum",Temperature:{$max:"$Temperature"}}}]);

如果我想搜索最近两天的最高温度,mongo查询将无法正常工作。

    db.posts3.aggregate([{$group:
         { _id: "maximum",
            {"time":{"$gt": ISODate("2019-10-12T11:25:06.156Z"),
                      "$lt":ISODate("2019-12-12T11:25:07.156Z")}
            },
                Temperature:{$max:"$Temperature"}

          }
       }
    ]);

2 个答案:

答案 0 :(得分:3)

将时间搜索移至$match管道可能会解决您的问题:

db.posts3.aggregate([
  {$match:
    {"time": {
      "$gt": ISODate("2019-10-12T11:25:06.156Z"),
      "$lt":ISODate("2019-12-12T11:25:07.156Z")}
    }
  },
  {$group:
     { 
       _id: "maximum",
       Temperature:{$max:"$Temperature"}
     }
  }
]);

答案 1 :(得分:1)

以下汇总将在最近两天内获得temp的{​​{1}}字段的最大值。

dt

结果为db.test.aggregate( [ { $match: { $expr: { $gte: [ "$dt", { $subtract: [ ISODate(), 2*24*60*60*1000 ] } ] } } }, { $group: { _id: null, maxTemp: { $max: "$temp" } } }, ] ) ,其中包含以下输入文档:

"maxTemp" : 14
相关问题