javascript - Node.js + Mongoose.js 如何获取一个月或一周的订单总数?

标签 javascript node.js mongodb mongoose aggregation-framework

我找到了总体框架,但是如何在一个月或一周内获得文档?我正在尝试计算一周或一个月内下了多少订单。文件是这样的:

{
    "_id" : ObjectId("53834167b54a3b22f0079e2c"),
    "createdDate" : ISODate("2014-05-26T13:28:07.942Z"),
    "__v" : 0
},
{
    "_id" : ObjectId("53834167b54a3b22f0079e2c"),
    "createdDate" : ISODate("2014-05-28T09:28:07.942Z"),
    "__v" : 0
}

我想要的是根据创建日期一个月内下了多少订单。

我当前使用的代码:

Order.aggregate([
    { "$match": {
        'createdDate': {
            "$gte": new Date("2014-05-25"), "$lte": new Date("2014-05-27")
        }
    }},
    { "$group": {
        "_id": { "$dayOfYear": "$createdDate" },
        "totalCost": { "$sum": "$totalCost" },
        "sum": {"$sum": 1}
    }}
],
function(err, result) {
    console.log(result);
    if (err) {
        res.send(400, err);
    } else {
        res.send(200, result);
    }
});

最佳答案

如果您只想要一段时间内的总订单,那么您可以使用$gte对您的日期进行范围查询。和 $lt样式运算符:

var query = Model.find({ 
    "createdDate": { 
        "$gte": new Date("2014-05-21"), "$lte": new Date("2014-05-29")
    }
}).count()

query.exec(function(err, count) {

如果在该范围内找到文档,则只会返回计数。

如果您想对文档内部的值求和,或者甚至确实从该日期范围内检索诸如“每日总计”之类的内容,那么您可以使用聚合框架来执行此操作:

Model.aggregate([
    { "$match": {
        "$gte": new Date("2014-05-21"), "$lte": new Date("2014-05-29")
    }},
    { "$group": {
        "_id": { "$dayOfYear": "$createdDate" }
        "totalValue": { "$sum": "$orderTotal" }
    }}
],
function(err, result) {

这不仅利用了 $sum运算符来添加“orderTotal”字段的值,但也使用 date aggregation运算符对给定范围内每一天的所有值进行分组。

如果您想要最后一种情况,您可以使用各种运算符来分解您想要在结果中包含的各种日期周期。

关于javascript - Node.js + Mongoose.js 如何获取一个月或一周的订单总数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23928680/

相关文章:

javascript - 如何在鼠标悬停时单击 href 链接?

javascript - 使用 Nodejs 自动从 API 获取数据

Mongodb 文本搜索和 ID 字段

javascript - 传递 url 以作为 kendoui 数据源中的参数读取

Javascript 对象属性与数组值

node.js - 解耦 Stream.pipe

node.js - 其他人访问我的node.js?

node.js - MongoDB 获取有条件字段的 SUM

java - 使用文档字段填充组合框

javascript - 如何在 Fancybox 2 打开的图像中添加 html 数据属性?