gpt4 book ai didi

mongodb - 在 mongodb 中使用 group by 子句获取值的范围

转载 作者:可可西里 更新时间:2023-11-01 09:57:02 24 4
gpt4 key购买 nike

我在 mongodb 中有一个这样的集合。

{
"_id": "1235677",
"name" : "xyz",
"time" : ISODate(2015-07-20T09:00:00Z)
},
{
"_id": "1235677",
"name" : "xyz",
"time" : ISODate(2015-07-20T11:00:00Z)
},
{
"_id": "1235677",
"name" : "abs",
"time" : ISODate(2015-07-20T11:00:00Z)
}

我如何获得数据库中所有名称的 Max(time) 减去 Min(time)。相当于这个 sql 查询 -

SELECT name, Max(time)-Min(time) from tablename group by name

最佳答案

您使用 aggregation framework对于像这样的 MongoDB:

db.collection.aggregate([
{ "$group": {
"_id": "$name",
"minTime": { "$min": "$time" },
"maxTime": { "$max": "$time" }
}},
{ "$project": {
"duration": { "$subtract": [ "$minTime", "$maxTime" ] }
}}
])

对于不涉及基本(SQL 等效)语句类型的所有内容(最佳),您都使用聚合框架:

SELECT something FROM table

这里的操作如下:

  • $group :与“GROUP BY”相同,您可以在其中指定要在 _id 主键值中聚合的“键”。 $min$max运算符分别与“MIN()”和“MAX()”相同,因为它作为一个函数,将“分组”作为“累加器”。

  • $project是 MongoDB 术语中一般语法的扩展。这允许您“操纵”现有字段值(在本例中是从 $group 计算到文档中的新值。

    所以这里的“计算”是由 $subtract 应用的从两个值来确定结果。

虽然并不总是给出具体示例,但我强烈建议查看 SQL to MongoDB mapping Chart核心文档的一部分。除了查看和学习 aggregation operators自己完整。

关于mongodb - 在 mongodb 中使用 group by 子句获取值的范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31609316/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com