Mongoose获取字段中每个唯一值的最新文档



我有一个Mongoose模式,它是这样的:

const mySchema = new mongoose.Schema(
{
_id: String,
coin: String,
closeTime: Number,
volume: Number,
}

我有很多不同的硬币。是否可以根据closeTime获得我所拥有的每个唯一硬币的最新文档?

非常感谢您的帮助!谢谢。

您可以使用聚合来按最新/最新closeTime排序,按coin分组,然后获得该组的第一个文档:

mySchema.aggregate([
{ $sort: { closeTime: -1 } },
{ $group: { _id: "$coin", latest: { $first: "$$ROOT" } } }
])

这是用数字closeTime按降序排序,获得第一个/最新的文档,并将其数据放入一个名为latest的属性。这会创建如下结果:

[{
"_id" : "2",
"latest" : {
"_id" : ObjectId("6149f106742bb30e2529c453"),
"coin" : "foo",
"closeTime" : 5,
"volume" : 1
}
}
{
"_id" : "1",
"latest" : {
"_id" : ObjectId("6149f111742bb30e2529c45f"),
"coin" : "bar",
"closeTime" : 4,
"volume" : 1
}
}]

您可以使用其他聚合阶段进一步提取/投影底层硬币文档。