要上下文化:
批处理文件包含BachItems 每个BatchItem是一行,并有一个行号。 每行都按顺序处理。
我是NoSQL和mongo的新手,我想知道如何查询每个BatchItem(行号)执行的最后处理步骤(最新EventType列),并按BatchId进行过滤? 例如,它应为BatchId“ 102030”返回以下结果:
我相信我可以使用Aggregate和Group函数来实现这一点,但不知道如何实现。 谢谢。
答案 0 :(得分:0)
您可以按照以下步骤进行操作:
db.batch.aggregate([
{
$match: {
"BatchId": 102030
}
},
{ $sort: { "Date": -1 } },
{
$group: {
_id: "$BatchItemId",
"doc": { "$push": { lastEventName: "$EventType" } },
}
},
{
$replaceRoot: {
newRoot: { $arrayElemAt: ["$doc", 0] }
}}
])