当前位置: 首页 > 知识库问答 >
问题:

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

颜举
2023-03-14

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

{"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个答案

章誉
2023-03-14

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

蒙古游乐场

db.collection.aggregate({
  $match: {
    creationDate: "2021/3/19"
  }
},
{
  $group: {
    _id: "$creationDate",
    ids: {
      $push: "$_id"
    },
    total: {
      $sum: "$WaterConsumption"
    }
  }
},
{
  $project: {
    "creationDate": "$_id",
    "_id": "$ids",
    "WaterConsumption": "$total"
  }
})
 类似资料:
  • 问题内容: 以这个为例(摘自Java regexchecker不起作用): 是否用于检查的值是否重要? 我知道有这是颇为相似。但是,很明显,这个问题只针对原始对象,而不是对象包装器;因此,将不适用。 另外,应该以不同于其他的方式对待? 问题答案: 从您的评论看来,您正在寻找使用包装器类的“最佳实践” 。但是实际上 并没有 最佳实践,因为使用此类开始是一个坏主意。使用对象包装的唯一原因是在您绝对 必

  • 问题内容: 我有一个需要在字段上排序的对象列表,例如“分数”。我不加思索地编写了一个实现Comparator的新类,该类可以完成任务并且可以工作。 现在回头看一下,我想知道是否应该让我的类实现Comparable,而不是创建一个实现Comparator的新类。分数是订购对象的唯一字段。 我做的可接受的做法是什么? 正确的方法是“首先让类实现Comparable(用于自然排序),如果需要替代字段比较

  • 问题内容: 我正在使用sqlite数据库。我的表架构是 表中的内容是这样的: 我使用以下sql语句选择名称及其按名称和dt分组的相应分数总和。 我有 现在,我想扩展查询,以便sql语句可以搜索其分数总和在不同时间(dt)不变的内容。在这种情况下,输出应为: 如何编写这样的sql? 问题答案: 这可以通过自我(反)联接来实现:

  • 我读到这些方法返回值的规则是,对于obj1.compareTo(ob2),例如,如果ob2在层次结构中位于ob1之下,则返回值为负值,如果它位于ob1之上,则返回值为正(如果它等于,则返回值为0)。然而,在我的类中,我看到了使用Math.signum在compareTo方法中获得-1(表示负值)和1(表示正值)的示例。 有什么原因吗? 编辑: 以下是我的意思:

  • 问题内容: 我有几种要比较的“任何”值类型。 使用==运算符会显示错误: “二进制运算符’==’不能应用于两个’Any’(aka’protocol <>’)操作数” 这样做的方式是什么? 问题答案: 唯一的方法是使用带有类型参数的函数,然后比较值是否都是该类型的值: 现在,使用上面的变量,您可以像这样比较它们:

  • 我只是实现了自己的插入排序,并试图验证功能,包括稳定性。 对于给定的未排序元素列表,我试图根据collections#sort(list)方法验证我的代码。 我找到了AbstractiterAbleAssert#ContainsExactlYelementsOf方法。 最后,我将方法跟踪到调用的位置。 方法是否覆盖稳定性? 或者,对于是否应该添加其他方法?