提问者:小点点

如何使用Mongo比较值和分组?


我试图检查两个日期是否相等,然后根据该日期分组另一个结果。

{"creationDate": "2021/3/19",
 "_id": "60549366ab4eb00aa1ed2fd9",
 "avgPower": 8241,
 "WaterConsumption": 22},

{"creationDate": "2021/3/19",
 "_id": "605493f4ab4eb00aa1ed2fda",
 "avgPower": 8241,
 "WaterConsumption": 22},

{"creationDate": "2021/2/17",
 "_id": "60549433ab4eb00aa1ed2fdb",
 "avgPower": 4300,
 "WaterConsumption": 32,}

我能够使用如下例所示的字符串进行聚合。这是我能做的最多的事情了。

let dateTwo = await Measure.aggregate([
  {$match: {creationDate: "2021/3/19"}}, <=======
  {$group: {_id: "$user", total: {$sum: "$WaterConsumption"}}}
]);
let dateTwo = await Measure.aggregate([
  {$match: {creationDate: ==>Check if the dates are equal<==}},
  {$group: {_id: "$user", total: {$sum: "$WaterConsumption"}}}
]);
{"creationDate": "2020/3/19", "_id": "someID", "WaterConsumption": 44}

如何声明表达式以检查creationDates是否相等?我真的很纠结。我可以使用JavaScript实现这一点,但我不知道如何使用Mongo实现这一点。


共1个答案

匿名用户

希望这就是你想要弄明白的。如果不是,请尝试重新表述你的问题。

蒙古游乐场

db.collection.aggregate({
  $match: {
    creationDate: "2021/3/19"
  }
},
{
  $group: {
    _id: "$creationDate",
    ids: {
      $push: "$_id"
    },
    total: {
      $sum: "$WaterConsumption"
    }
  }
},
{
  $project: {
    "creationDate": "$_id",
    "_id": "$ids",
    "WaterConsumption": "$total"
  }
})