mongodb - 在 MongoDB 中聚合过去 n 天
问题描述
我正在尝试在 MongoDb 中构建一个查询(与 pymongo 一起运行),以获取过去 30 天的分组总和。我真的很难将聚合函数和日期差异结合起来。查询的 SQL 等效项将是:
SELECT item, sum(volume) from table
where date >= DATEADD(DAY, -30, now())
group by item
任何人都可以帮忙吗?
解决方案
这很简单,首先您要通过日期字段匹配匹配的文档,然后用于$group
计算总和。
首先我们需要的代码:
import pymongo
from datetime import date, timedelta, datetime
connection = pymongo.MongoClient("connection url")
collection = connection["db_name"]['collection_name']
主要聚合:
thirty_days_ago = date.today() - timedelta(days=30)
results = list(collection.aggregate([
{
"$match": {
"date": {"$gt": thirty_days_ago }
}
},
{
"$group": {
"_id": "item",
"sum": {"$sum": "$volume"}
}
}
]))
我不得不猜测一些字段名称,因为您没有提供架构,但您应该能够轻松地根据您的需要调整它。
推荐阅读
- django - 如何使用自定义表单更新 django auth 用户
- javascript - 解析 JSON 对象,其值作为单引号字符串传递
- python - 运行子进程后如何立即杀死Python脚本?
- r - 跨数据框乘以列值
- python - 使用 Python 运行批处理文件时出现问题
- unity3d - 附加到搅拌机模型时纹理变得混乱
- python - 将文件夹上传到 Google 云端硬盘
- php - Laravel:使用 mergeBindings() 的复杂查询
- excel - Excel SUMPRODUCT/COUNTIFS #DIV/0 错误
- sql - 基于条件的 SQL 查询先前的值