在 MongoDB 中,如果你想根据 name
字段去重,并且按 time
字段从大到小排序,可以使用聚合框架来实现。以下是一个示例查询:
db.collection.aggregate([
{
$sort: { time: -1 } // 首先按照 time 从大到小排序
},
{
$group: {
_id: "$name", // 按照 name 字段分组
latestRecord: { $first: "$$ROOT" } // 获取每个分组中的第一个文档,即最新的文档
}
},
{
$replaceRoot: { newRoot: "$latestRecord" } // 替换根文档为最新记录
}
])
解释:
- $sort:首先对集合进行排序,以确保后续操作时最新的文档排在前面。
- $group:然后通过
$group
操作符按name
字段进行分组,使用$first
来获取每个组中第一个文档,这里是最新的文档。 - $replaceRoot:最后,用
$replaceRoot
操作符替换当前文档为我们所需的最新记录。
请将 collection
替换为你的具体集合名称。这种方法可以有效地实现你所需的去重和排序功能。
内容由零声教学AI助手提供,问题来源于学员提问