2016-08-11 57 views
5

Belirli bir öğenin ilk iki (veya başka bir sayı) sayımını verilen koleksiyondan elde etmenin bir yolunu arıyorum. mongoDB'deki dizi öğelerinin üst sayıları nasıl korunur?

{"id": "xyz" , "fruits": ["Apple", "Mango"]} 
{"id": "abx", "fruits": ["Apple", "Banana"]} 
{"id" : "pqr", "fruits": ["Apple", "Mango"]} 

Yukarıdaki örnek için, sonuç olacaktır

: Apple and Mango Apple oluşumu ile (üç kez), daha yüksek Mango (iki kez) tarafından takip edilir, çünkü. Mongo map-reduce işlevine gitmem gerekiyor mu?

Arka uç platformunun performansına ve kararlılığına karşı daha fazla eğlendim. "Olay sayısı" gerçek zamanlı oluyorsa nasıl ilerleyebilirim?

Herhangi bir yardım önemli olabilir.

cevap

2

Toplam kullanabilirsiniz. performans için

[ 
    { 
     $unwind: "$fruits" 
    }, 
    { 
     $group: { 
      _id: "$fruits", 
      count: {$sum: 1} 
     } 
    }, 
    { 
     $sort: {count:-1} 
    }, 
    { 
     $limit: 2 
    } 
] 
+1

bunu endeks kullanabilirsiniz beri bir ilk adım olarak 'meyve' ve devre dışı '_ID' proje isteyebilirsiniz: İşte bir meyve değer tek bir belge içinde tekrar edilmeyecektir varsayar basit bir örnek daha iyi –