你好我在问这个问题之前已经搜索了很多,但仍然没有找到任何正确的答案。 我有一个集合(它每隔x秒从MSSQL表复制),如下所示:https://ekhmoi.tinytake.com/sf/MzU2MTcwXzIwNDcxNTg
正如您所看到的,有些字段具有相同的密钥(MessageId)。 我的目标是通过使用MessageId + Message(具有相同MessageId的每条记录)对它们进行某种分组,最后我将其插入到新的Collection中。 所以最终结果应如下所示: https://ekhmoi.tinytake.com/sf/MzU2MTc3XzIwNDcyMDY
知道我该怎么做?
答案 0 :(得分:1)
您可以使用聚合对您的收藏数据进行分组以获得最终结果,而且该过程实际上非常简单。
如果您还没有添加这两个软件包,首先运行meteor add meteorhacks:aggregate
和meteor 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);
请注意,此示例仅代表我的想法,因此如果您将粘贴直接复制到代码中,它可能无效。