Mongo使用C#Api查询日志集合

时间:2019-02-18 01:34:03

标签: c# .net mongodb mongodb-query

要上下文化:

批处理文件包含BachItems 每个BatchItem是一行,并有一个行号。 每行都按顺序处理。

我是NoSQL和mongo的新手,我想知道如何查询每个BatchItem(行号)执行的最后处理步骤(最新EventType列),并按BatchId进行过滤? 例如,它应为BatchId“ 102030”返回以下结果:

enter image description here

我相信我可以使用Aggregate和Group函数来实现这一点,但不知道如何实现。 谢谢。

1 个答案:

答案 0 :(得分:0)

您可以按照以下步骤进行操作:

db.batch.aggregate([
    {
        $match: {
             "BatchId": 102030
        }
    }, 
    { $sort: { "Date": -1 } },
    {
        $group: {
            _id: "$BatchItemId",
            "doc": { "$push": { lastEventName: "$EventType" } },
        }
    },
    { 
        $replaceRoot: {
        newRoot: { $arrayElemAt: ["$doc", 0] }
    }}

])