如何在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 }

以上是 如何在MongoDB中计算两个日期之间的字段并求和? 的全部内容, 来源链接: utcz.com/z/323888.html

回到顶部