Mongodb 按重点分组流星收集
你好,在问这个问题之前,我已经搜索了很多,但仍然没有找到任何合适的答案。 我有一个集合(它每x秒从MSSQL表复制一次),如下所示: 如您所见,有些字段具有相同的键(MessageId)。 我的目标是对它们进行某种类型的分组,通过获取MessageId+Message(每个记录都有相同的MessageId),最后我将把它插入到新集合中。 所以最终结果应该是这样的:Mongodb 按重点分组流星收集,mongodb,meteor,collections,group-by,Mongodb,Meteor,Collections,Group By,你好,在问这个问题之前,我已经搜索了很多,但仍然没有找到任何合适的答案。 我有一个集合(它每x秒从MSSQL表复制一次),如下所示: 如您所见,有些字段具有相同的键(MessageId)。 我的目标是对它们进行某种类型的分组,通过获取MessageId+Message(每个记录都有相同的MessageId),最后我将把它插入到新集合中。 所以最终结果应该是这样的: 你知道我该怎么做吗?你可以使用聚合对收集的数据进行分组,以获得最终结果,这个过程实际上非常简单 首先,如果尚未添加这两个包,请运行
你知道我该怎么做吗?你可以使用聚合对收集的数据进行分组,以获得最终结果,这个过程实际上非常简单 首先,如果尚未添加这两个包,请运行meteor add meteorhacks:aggregate和meteor add mikowals:batch insert 假设CollectionA是第一个集合,CollectionB是第二个集合。下面是我如何将集合A中的数据分组,并将最终结果写入集合B中:
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);
请注意,这个示例只是我的想法的一个体现,因此如果您将粘贴直接复制到代码中,它可能不起作用。您是否尝试过使用mongodb的聚合框架?您可以在meteor中使用它,方法是添加
meteor添加meteorhacks:aggregate
包,该包将允许您在收集实例上使用.aggregate。我不太确定如何在我的案例中使用此框架在您的最终结果中,您是否介意所有消息都在一个数组中,而不是消息1、消息2,消息_3…?请给出一个示例进行尝试。从我受挫的那一点出发的任何东西都应该很棒