You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在MongoDB Compass中按时间分组统计指定日期订单?

在MongoDB Compass中实现指定日期订单统计(等效SQL逻辑)

需要统计指定日期(2023-02-16)的订单数量,实现与以下SQL等效的逻辑:

SELECT count(1) num,
       date(creation_date) date
FROM orders
WHERE date(creation_date) = "2023-02-16"
GROUP BY date

订单集合的文档模型示例:

{
  "creation_date": {
    "$date": {
      "$numberLong": "1641981205813"
    }
  },
  "user_id": {
    "$oid": "61dedd8b7a520461dd78016b"
  },
  "products": [
    {
      "_id": {
        "$oid": "61dede397a520461dd7818bd"
      },
      "product_id": {
        "$oid": "615071ae8b66e1e9a3d6ea50"
      },
      "payment": true,
      "support_all_payment": false,
      "term_ids": null
    }
  ],
  "carts_info": [
    {
      "_id": {
        "$oid": "61dede397a520461dd7818be"
      },
      "support_type": null,
      "support_price": 0,
      "product_price": 11000,
      "product_type": "all",
      "final_price": 11000,
      "product_id": {
        "$oid": "615071ae8b66e1e9a3d6ea50"
      }
    }
  ],
  "_des": "initial_payment",
  "_type": "online",
  "_token": "9e0cb4d111f642f1a6f482bb04f1f57b",
  "_price": 11000,
  "_status": "unpaid",
  "_terminal_id": "12605682",
  "__v": 0,
  "additional_information": {
    "saman_bank": {
      "MID": "0",
      "ResNum": "61dede387a520461dd7818bb",
      "State": "CanceledByUser",
      "TraceNo": "",
      "Wage": "",
      "Rrn": "",
      "SecurePan": "",
      "HashedCardNumber": "",
      "Status": "1"
    }
  }
}

操作步骤

  1. 打开MongoDB Compass,连接目标数据库,选择orders集合
  2. 切换到**聚合(Aggregation)**标签页,依次添加以下聚合阶段:

阶段1:筛选指定日期的订单(对应SQL的WHERE子句)

使用$match阶段过滤creation_date在目标日期当天的文档:

{
  "$match": {
    "creation_date": {
      "$gte": ISODate("2023-02-16T00:00:00Z"),
      "$lt": ISODate("2023-02-17T00:00:00Z")
    }
  }
}

说明:时间范围匹配比直接转换日期后匹配更高效,可利用creation_date字段上的索引。

阶段2:提取日期字段(对应SQL的date(creation_date))

使用$addFields阶段将creation_date转换为YYYY-MM-DD格式的日期字符串:

{
  "$addFields": {
    "date": {
      "$dateToString": {
        "format": "%Y-%m-%d",
        "date": "$creation_date"
      }
    }
  }
}

阶段3:按日期分组并统计数量(对应SQL的GROUP BY和COUNT)

使用$group阶段按提取的date字段分组,统计订单总数:

{
  "$group": {
    "_id": "$date",
    "num": { "$sum": 1 }
  }
}

阶段4:重命名字段(可选,贴近SQL输出格式)

若需要将_id字段改为date,添加$project阶段:

{
  "$project": {
    "_id": 0,
    "date": "$_id",
    "num": 1
  }
}

执行聚合查询后,将得到与目标SQL完全一致的结果,示例如下:

{ "date": "2023-02-16", "num": 123 }

内容的提问来源于stack exchange,提问作者Martin AJ

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 02:27:45