当前位置: 首页 > 编程笔记 >

如何在MongoDB中计算两个日期之间的字段并求和?

薛彭薄
2023-03-14
本文向大家介绍如何在MongoDB中计算两个日期之间的字段并求和?,包括了如何在MongoDB中计算两个日期之间的字段并求和?的使用技巧和注意事项,需要的朋友参考一下

使用聚合$gte和$lte以及$sum来对两个日期之间的字段进行计数和求和。首先让我们创建一个包含文档的集合-

> db.countandsumdemo.insertOne({"Value":10,"created_at":ISODate('2019-10-11')});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e038e6df5e889d7a51994fa")
}
> db.countandsumdemo.insertOne({"Value":50,"created_at":ISODate('2019-01-31')});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e038e77f5e889d7a51994fb")
}
> db.countandsumdemo.insertOne({"Value":100,"created_at":ISODate('2019-06-31')});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e038e8af5e889d7a51994fc")
}

以下是在find()方法的帮助下显示集合中所有文档的查询-

> db.countandsumdemo.find().pretty();

这将产生以下输出-

{
   "_id" : ObjectId("5e038e6df5e889d7a51994fa"),
   "Value" : 10,
   "created_at" : ISODate("2019-10-11T00:00:00Z")
}
{
   "_id" : ObjectId("5e038e77f5e889d7a51994fb"),
   "Value" : 50,
   "created_at" : ISODate("2019-01-31T00:00:00Z")
}
{
   "_id" : ObjectId("5e038e8af5e889d7a51994fc"),
   "Value" : 100,
   "created_at" : ISODate("2019-07-01T00:00:00Z")
}

以下是对两个日期之间的字段进行计数和求和的查询-

> db.countandsumdemo.aggregate(
...    [{
...       $match: {
...          created_at: {
...             $gte: new Date('2019-05-01'),
...             $lte: new Date('2019-12-31')
...          }
...       }
...    }, {
... $group: {
...    _id: null,
...    SUM: {
...       $sum: "$Value"
...    },
...    COUNT: {
...       $sum: 1
...    }
... }
... }]
... );

这将产生以下输出-

{ "_id" : null, "SUM" : 110, "COUNT" : 2 }
 类似资料:
  • 问题内容: 我正在计算从“开始”到“结束”日期之间的天数。例如,如果起始日期为2010年4月13日,起始日期为2010年5月15日,则结果应为 如何使用JavaScript获得结果? 问题答案:

  • 问题内容: 如何计算2010年1月1日至2010年2月3日之间的日期? 问题答案: 编辑: 请记住,对象表示确切的时刻,它们没有任何关联的时区信息。当您使用例如一个字符串转换为日期时,从配置的时区的时间转换。因此,两个对象之间的秒数 始终 是时区不可知的。 此外,本文档还指定可可的时间实现方式不包含leap秒,因此,如果您需要这种准确性,则需要滚动自己的实现方式。

  • 问题内容: 我有两个输入日期来自Date Picker控件。我选择了开始日期2/2/2012和结束日期2/7/2012。我为此编写了以下代码。 我应该得到6的结果,但是我却得到5。 谁能告诉我如何获得确切的区别? 问题答案: 从Moment文档: 或包含起点: 避免手动打乱时间戳和时区。 根据您的特定用例,您可以 使用和/或强制diff在“端点”处包含或排除(如@kotpal在评论中所建议)。 设

  • 问题内容: 如果我有一对夫妇的字符串和被设置为(例如)和(意为2011年7月1至2011年7月17日)。我如何计算从开始日期到结束日期的天数?在给出的示例中,将是17天。 问题答案: 这是原始的方法

  • 问题内容: 我正在使用ES,并且我需要一个查询,该查询返回两个datetime(mysql timediff)之间的差,但是还没有找到ES的任何功能来做到这一点。有人可以帮助我吗? MySQL查询 谢谢! 问题答案: 最好的是脚本字段。如果您已启用动态脚本并且这些日期字段在映射中定义为日期,则上述搜索查询应该可以正常工作。 请注意,您将获得epoch的结果,您需要将其转换为面额。 您可以在此处阅读

  • 问题内容: 如何计算SQL Server中两个日期之间的工作日数? 星期一至星期五,它必须是T-SQL。 问题答案: 对于周一至周五的工作日,您可以使用单个SELECT进行操作,如下所示: 如果要包括假期,则必须进行一些调整…

  • 我试图在我正在创建的C#应用程序中显示两个日期之间的年、月和日。(使用控制台进行测试) 我正在使用NodaTime来实现这一点,但在接下来的几个月里,我遇到了一些问题。 我已经阅读了这里的大部分问题和答案,但没有找到任何我可以从中受益的东西。 大多数时候函数工作但有时它不添加月如果天 我使用这个代码进行测试 (2017, 10, 16)和(2018, 1, 15)应该显示为3个月,但它们显示为2个

  • 问题内容: 在java中如何计算两个日期的间隔? 问题答案: 简单差异(无lib) 然后你可以致电: 以分钟为单位获取两个日期的差异。 ,一个标准的Java枚举,范围从nanos到数天。 可读的差异(无lib) http://ideone.com/5dXeu6 输出类似于,带有单位排序。 你只需要将该映射转换为用户友好的字符串即可。 警告 上面的代码片段计算了两个瞬间之间的简单差异。它可以在夏令开