Oto przykład użycia agregacji API. Aby utrudnić sprawę, grupujemy według słów kluczowych nieuwzględniających wielkości liter w dokumentach.
db.articles.aggregate([
{
$match: {
keywords: { $not: {$size: 0} }
}
},
{ $unwind: "$keywords" },
{
$group: {
_id: {$toLower: '$keywords'},
count: { $sum: 1 }
}
},
{
$match: {
count: { $gte: 2 }
}
},
{ $sort : { count : -1} },
{ $limit : 100 }
]);
które dają Wynik taki jak
{ "_id" : "inflammation", "count" : 765 }
{ "_id" : "obesity", "count" : 641 }
{ "_id" : "epidemiology", "count" : 617 }
{ "_id" : "cancer", "count" : 604 }
{ "_id" : "breast cancer", "count" : 596 }
{ "_id" : "apoptosis", "count" : 570 }
{ "_id" : "children", "count" : 487 }
{ "_id" : "depression", "count" : 474 }
{ "_id" : "hiv", "count" : 468 }
{ "_id" : "prognosis", "count" : 428 }
Przyjrzał się schematowi [aggregation] (http://docs.mongodb.org/manual/reference/sql-aggregation-comparison/)? – WiredPrairie
Lub [map-reduce] (http://docs.mongodb.org/manual/applications/map-reduce/)? – WiredPrairie
Możliwy duplikat [MongoDB select count (distinct x) w indeksowanej kolumnie - policz unikalne wyniki dla dużych zestawów danych] (http://stackoverflow.com/questions/11782566/mongodb-select-countdistinct-x-on-an- indeksowana-kolumna-liczba-unikalnych-wyników-dla). Wysłałem tam swoją odpowiedź. – expert