map-reduce用于排序

时间:2014-02-06 14:21:00

标签: mongodb mapreduce

我有一个集合,其文档具有以下结构:

{
  "_id" : ObjectId("XXXX"),
  "data" : "stuff",
  "type" : "X",
  "location" : [XX, XX],
  "datetime" : {stuff},
  "user" : 453,
  "userName" : "XXX",
  "timestamp" : XXXX,
  "device" : XXXX
}

我需要知道哪个设备使用每个用户。

由于每个文档都是一个日志条目,每个用户可以有很多。所以我需要做的就是按用户对它们进行破坏。

我现在正在php rigth中这样做,但需要很长时间,大约有2k用户和60k日志,所以我认为使用map-reduce将是最佳选择。

我不太明白地图减少,我刚开始。你能告诉我一个例子吗?

1 个答案:

答案 0 :(得分:1)

如何使用简单的聚合。

 db.yourcollection.aggregate([

    {$match : { user : 453}},
    {$group : {_id : "$user", devices: {$push : "$device"}}}
]);

这将返回用户453的所有设备(保存在名为devices的数组中)。