这是一个可以使用MongoDB aggregation framework执行的分组操作。
样本数据
> db.foo.find().pretty();
{ "_id" : ObjectId("515ead9c7bb40c6a51b16a68"), "Value" : 12 }
{ "_id" : ObjectId("515ead9d7bb40c6a51b16a69"), "Value" : 12 }
{ "_id" : ObjectId("515ead9f7bb40c6a51b16a6a"), "Value" : 14 }
{ "_id" : ObjectId("515eada07bb40c6a51b16a6b"), "Value" : 8 }
采样分组操作
> db.foo.aggregate({$group :
{ _id: "$Value",
count : {$sum : 1},
ids: { $addToSet : "$_id" } } });
这将返回等于Value
的群体与他们的数量和各个ID一起:
{
"result" : [
{
"_id" : 8,
"count" : 1,
"ids" : [
ObjectId("515eada07bb40c6a51b16a6b")
]
},
{
"_id" : 14,
"count" : 1,
"ids" : [
ObjectId("515ead9f7bb40c6a51b16a6a")
]
},
{
"_id" : 12,
"count" : 2,
"ids" : [
ObjectId("515ead9d7bb40c6a51b16a69"),
ObjectId("515ead9c7bb40c6a51b16a68")
]
}
],
"ok" : 1
}
你应该阅读汇总框架的文档并理解其l模仿。
你有什么?如果你知道字段名称,我会考虑使用聚合框架。组和数。如果不是,MapReduce。 – WiredPrairie 2013-04-05 10:58:19