按关键流星集合分组

时间:2015-10-27 05:36:40

标签: mongodb meteor collections group-by

你好我在问这个问题之前已经搜索了很多,但仍然没有找到任何正确的答案。 我有一个集合(它每隔x秒从MSSQL表复制),如下所示:https://ekhmoi.tinytake.com/sf/MzU2MTcwXzIwNDcxNTg

正如您所看到的,有些字段具有相同的密钥(MessageId)。 我的目标是通过使用MessageId + Message(具有相同MessageId的每条记录)对它们进行某种分组,最后我将其插入到新的Collection中。 所以最终结果应如下所示: https://ekhmoi.tinytake.com/sf/MzU2MTc3XzIwNDcyMDY

知道我该怎么做?

1 个答案:

答案 0 :(得分:1)

您可以使用聚合对您的收藏数据进行分组以获得最终结果,而且该过程实际上非常简单。

如果您还没有添加这两个软件包,首先运行meteor add meteorhacks:aggregatemeteor add mikowals:batch-insert

假设CollectionA是第一个集合,而CollectionB是第二个集合。以下是我如何将Collection A中的数据分组并将最终结果写入CollectionB:

let pipeline = [
    {$project: {TraceId: 1, MessageId: 1, Message: 1}},
    {$group: {
        _id: "$MessageId",
        Message: {$push: "$Message"},
        TraceId: {$first: "$TraceId"}
    }},
    {$project: {
        _id: 0,
        MessageId: "$_id",
        Message: 1,
        TraceId: 1
    }}
];

let groupedData = CollectionA.aggregate(pipeline);

CollectionB.batchInsert(groupedData);

请注意,此示例仅代表我的想法,因此如果您将粘贴直接复制到代码中,它可能无效。