python - 在 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”?
解决方案
您使用 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 } }
])
推荐阅读
- android - 应用程序被杀死后片段仍然存在(Android)
- c#-7.3 - 针对多个框架的 C#
- html - 错误错误:Angular 5 中的 ExpressionChangedAfterItHasBeenCheckedError
- yii2 - 在命令行中运行 Yii2 queue/run 会导致 Windows Ampps 出错
- css - 当元素到达底部边缘时设置不透明度
- vim - 在 Vim 中使用 ALE 打印 lint 排除
- python - 生成缺失的多索引
- c++ - 全局函数参数
- http - 哪些 HTTP 标头可以组合在一个列表中?
- docker - Docker 堆栈首先部署停止容器