gpt4 book ai didi

node.js - MongoDB:如何按字段分组并获取最新结果?

转载 作者:太空宇宙 更新时间:2023-11-03 23:39:14 31 4
gpt4 key购买 nike

我在 MongoDB 集合中有以下数据

[
{name: "weight", value: 95, date: "2014-11-07"},
{name: "hips", value: 105, date: "2014-02-06"},
{name: "weight", value: 89, date: "2014-05-12"}
]

我正在尝试取回以下数据:

最近日期的每个名称:

[
{_id: "weight", value: 95, date: "2014-11-07"},
{_id: "hips", value: 105, date: "2014-02-06"}
]

我研究了聚合:

group: {
_id: "$name",
date: { $max: "$date" }
}

但是我没有得到我想要的结果。我需要找到的内容的值(value)

[
{_id: "weight", date: "2014-11-07"},
{_id: "hips", date: "2014-02-06"}
]

如何要求 mongo 返回此聚合中的值?或者聚合是错误的方法吗?

最佳答案

您的“日期”值在这里并没有真正帮助您。您应该使用 BSON date而不是您当前拥有的“字符串”。至少你串了一个“词法”,这样它们就会正确排序。

不过原理基本相同。您需要aggregation framework得到结果。这里主要操作是$sort按日期并使用 $first grouping operator$group管道阶段:

Model.aggregate(
[
// Sort on the date per grouping key
{ "$sort": { "name": 1, "date": 1 } },

// Then group
{ "$group": {
"_id": "$name",
"value": { "$first": "$value" },
"date": { "$first": "$date" }
}}
],
function(err,results) {
// do something with results
}
)

$max运算符仅适用于奇异值。对于“整行”或其他关联值,您需要“排序”并使用像 $first 这样的运算符或$last相反。

关于node.js - MongoDB:如何按字段分组并获取最新结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26871559/

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