【问题标题】:how to aggregate my mongo data based on date filter如何根据日期过滤器聚合我的 mongo 数据
【发布时间】:2021-07-30 23:02:27
【问题描述】:

我是 mongodb 初学者。使用 mongodb/mongoose 的初级 JavaScript 开发人员
我想知道是否有人可以帮助我应对这个简单的挑战:我想根据日期对结果进行分组(我可以按日期分组和过滤,但不能同时进行)

架构:

const ExpenseSchema = new Schema({
    item: String,
    amount: Number,
    date: Date,
    group: String,
})

在此处输入代码

样本:

{
  "_id": {
    "$oid": "608c4fd352efae8cc8a10100"
  },
  "item": "Amril",
  "amount": 435.42,
  "date": {
    "$date": "2018-05-05T11:06:00.000Z"
  },
  "group": "food",
  "__v": 0
}

我不工作的猫鼬查询

enter code here

Expense.aggregate([
        {
            $match: 
            {
                date: { $gt: startDate, $lt: endDate }
            }
        },
         {
            $group:
            {
                _id: '$group',
                totalAmount: { $sum: "$amount" }
            }
        }], function (err, total) {
        res.send(total)
    })

提前致谢

enter image description here

【问题讨论】:

  • 看到类似的问题mongodb group values by multiple fields你试试$group: { _id; { group: "$group", date: "$date" }, .. }
  • 您想根据date and group fields对数据进行分组吗?
  • 是的,我想对给定日期之间所有费用的总和进行分组。

标签: javascript mongoose mongodb-query


【解决方案1】:

已解决 - 将查询更改为:

Expense.aggregate([
        {
            $match: {
                date: { $gt: new Date(new Date(startDate).setHours(00, 00, 00)), $lt: new Date(new Date(endDate).setHours(23, 59, 59)) }
            }
        },{$group:{
            _id:'$group',
            amount:{$sum:'$amount'}
        }}
    ], function (err, total) {
        res.send(total)
    })

    
})

添加:

 { $gt: new Date(new Date(startDate).setHours(00, 00, 00)), $lt: new Date(new Date(endDate).setHours(23, 59, 59)) }

而不是:

{ $gt: startDate, $lt: endDate }

基于这篇文章: https://dev.to/itz_giddy/how-to-query-documents-in-mongodb-that-fall-within-a-specified-date-range-using-mongoose-and-node-524a

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-17
    • 2023-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多