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