首页 > 解决方案 > 在 mongodb 中聚合时是否可以将“_id”重命名为其他名称?

问题描述

我有以下查询

collection.aggregate([
        {"$match": {"timestamp": {"$gte": lastDateInUnix}} },
        {   "$group": {
                "_id": {
                    "$dateToString": {
                        "format": "%d-%m-%Y",
                        "date": {
                            "$toDate": {
                                "$multiply": [1000, "$timestamp"]
                            }
                        }
                    }
                },
                "totalMessages": {"$sum": 1 }
            }
        }
    ])

这将返回如下内容:

[
    {
        "_id": "05-01-2020",
        "totalMessages": 4
    }
]

由于“_id”是必填字段,是否可以将“_id”重命名为“dateOccurred”?

标签: pythonmongodbpymongo

解决方案


您使用 a$project来执行此操作,_id它是 DB 中现有文档的必填字段,但是您可以按照自己喜欢的方式转换文档或结果,.aggregate()或者.find()是从 DB 检索数据的两种方式:

collection.aggregate([
    { "$match": { "timestamp": { "$gte": lastDateInUnix } } },
    {
        "$group": {
            "_id": {
                "$dateToString": {
                    "format": "%d-%m-%Y",
                    "date": {
                        "$toDate": {
                            "$multiply": [1000, "$timestamp"]
                        }
                    }
                }
            },
            "totalMessages": { "$sum": 1 }
        }
    },
    { $project: { dateOccurred: '$_id', totalMessages: 1, _id: 0 } }
])

推荐阅读