MongoDBで最新データをグループ化して取得する方法
MongoDBで最新データをグループ化するクエリを実行するには、アグリゲーションパイプラインで$groupと$sort演算子を組み合わせて使用します。
コレクション名”collection”にクエリするデータを格納している場合、次のような集約パイプライン操作で最新のデータでのグループクエリを行うことができます。
db.collection.aggregate([
// 按照指定字段进行分组
{ $group: {
_id: "$groupField", // 指定要分组的字段
maxTime: { $max: "$timestamp" }, // 获取每个分组内的最大时间戳
data: { $first: "$$ROOT" } // 获取每个分组内的第一条数据
}},
// 按照最大时间进行排序
{ $sort: { maxTime: -1 } },
// 选择需要的字段,可以使用$project操作符进行筛选
{ $project: { _id: 0, maxTime: 0 }}
])
最初に$group演算子を使って指定したフィールドでグルーピングし、次に$max演算子を使って各グループ内の最大タイムスタンプを取得します。その後、$first演算子を使って各グループ内の最初のデータ、つまり最新データを取得します。
最後に、$sort 演算子を使って時間を元に並べ替え、最新のデータを先頭に持ってくる。特定のフィールドを選択する必要がある場合は、$project 演算子を使用してフィルタリングできます。
なお、上記のコード内の「groupField」と「timestamp」は、実際のカラム名に置き換えてください。