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

如何用PyMongo实现MongoDB聚合获取最新时间戳的多文档指定数据

解决方案:获取步道最新更新的评论及统计数据

你可以通过多阶段聚合管道实现需求,先统计总记录数和最新更新时间,再关联原集合筛选出对应最新时间的评论数据,具体PyMongo实现如下:

from pymongo import MongoClient

client = MongoClient('mongodb://localhost:27017/')
db = client['your_database_name']
trail_collection = db['your_collection_name']

pipeline = [
    # 第一阶段:按步道分组,统计总记录数和最新更新时间
    {
        "$group": {
            "_id": "$trailName",
            "updateCount": {"$sum": 1},
            "mostRecentUpdate": {"$max": "$update"}
        }
    },
    # 第二阶段:关联原集合,筛选出该步道最新更新时间的所有记录
    {
        "$lookup": {
            "from": trail_collection.name,
            "let": {
                "trail_name": "$_id",
                "latest_update": "$mostRecentUpdate"
            },
            "pipeline": [
                {
                    "$match": {
                        "$expr": {
                            "$and": [
                                {"$eq": ["$trailName", "$$trail_name"]},
                                {"$eq": ["$update", "$$latest_update"]}
                            ]
                        }
                    }
                },
                {
                    "$project": {
                        "_id": 0,
                        "user": 1,
                        "comment": 1
                    }
                }
            ],
            "as": "latestComments"
        }
    },
    # 第三阶段:重命名字段,整理最终输出格式
    {
        "$project": {
            "_id": 0,
            "trailName": "$_id",
            "updateCount": 1,
            "mostRecentUpdate": 1,
            "latestComments": 1
        }
    }
]

result = list(trail_collection.aggregate(pipeline))
for item in result:
    print(item)

各阶段说明:

  1. $group阶段:按trailName分组,用$sum统计总记录数,$max获取该步道的最新更新时间,保留你已实现的统计逻辑。
  2. $lookup阶段:关联原集合,通过let传递步道名称和最新更新时间变量,内部管道用$match筛选对应条件的记录,再用$project只保留user和comment字段,结果存入latestComments数组。
  3. $project阶段:重命名_id为trailName,清理冗余字段,整理成符合需求的输出结构。

运行后每条步道的latestComments数组仅包含最新更新日期的所有用户评论,同时保留总记录数和最新更新时间的统计数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 15:52:24