我有一个集合,其文档具有以下结构:
{
"_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将是最佳选择。
我不太明白地图减少,我刚开始。你能告诉我一个例子吗?
答案 0 :(得分:1)
如何使用简单的聚合。
db.yourcollection.aggregate([
{$match : { user : 453}},
{$group : {_id : "$user", devices: {$push : "$device"}}}
]);
这将返回用户453的所有设备(保存在名为devices的数组中)。