【问题标题】:Aggregate date Range Mongoose聚合日期范围猫鼬
【发布时间】:2017-12-07 19:31:26
【问题描述】:

亲爱的,

我正在尝试计算我的 mongo db 中的值,但聚合返回空数组。

我的查询如下所示:

Order.aggregate(
            [
                {
                    '$match': {
                        createdAt : {
                            '$gte' : new Date("2017-11-29").setHours(14,43,0,0),
                            '$lt' : new Date()
                        }
                    }
                },
                {
                    $group: {
                        _id: null,
                        count: {
                            $sum: 1
                        }
                    }
                }
            ]
        ).exec().then(r => {
            console.log(r); // []
        });

另一个(和脏的)查询工作正常:

Order.find({
            createdAt : {
                '$gte' : new Date("2017-11-29").setHours(14,43,0,0),
                '$lt' : new Date()
            }
        }).exec().then(orders => {
            console.log(orders.length);// 1463

        })

我错过了什么吗?

提前致谢

【问题讨论】:

    标签: node.js mongodb mongoose


    【解决方案1】:

    为什么不

    Order.count({
                createdAt : {
                    '$gte' : new Date("2017-11-29").setHours(14,43,0,0),
                    '$lt' : new Date()
                }
            }).exec().then(count=> {
                console.log(count);// 1463
    
            })
    

    【讨论】:

    • 谢谢,这不能解释为什么我不能执行聚合,但它回答了我的短期问题
    • 我一定会检查这个问题并相应地更新我的答案
    • @Shubham 你检查了吗??
    • 检查这个 stackoverflow.com/questions/47768327/… 日期需要转换为数据类型 ISODate 但在聚​​合中它将日期作为字符串发送,当您使用 find 时,它将日期转换为 ISODate
    猜你喜欢
    • 2015-07-27
    • 1970-01-01
    • 2018-09-02
    • 1970-01-01
    • 2018-05-25
    • 1970-01-01
    • 2019-05-22
    • 2013-01-22
    • 2014-12-16
    相关资源
    最近更新 更多