MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Grup MongoDB berdasarkan elemen dalam array

Kerangka kerja apa yang Anda gunakan? Ini bukan shell MongoDB dan terlihat seperti pembungkus aneh di sekitar MapReduce. Dalam hal ini $unwind tidak akan tersedia, dan Anda memerlukannya untuk pengguna dalam kerangka kerja agregasi. Inilah yang Anda inginkan dalam cangkang mongo:

db.articles.aggregate([
  {$match: { class_date: { $gte: date } } },
  {$project: { _id: 0, class_artist: 1 } },
  {$unwind: "$class_artist" },
  {$group: { _id: "$class_artist", tags: { $sum: 1 } }},
  {$project: { _id: 0,class_artist: "$_id", tags: 1 } },
  {$sort: { tags: -1 } }
])

Sangat efisien:

  1. Filter menurut tanggal karena Anda telah menyetel var selama 7 hari terakhir
  2. Proyeksikan hanya bidang yang kita butuhkan { Kita hanya perlu satu! }
  3. Lepaskan larik sehingga kami sekarang memiliki catatan untuk setiap elemen larik di setiap dokumen
  4. Grup Artis dari dokumen yang diperluas
  5. Project ke dalam format dokumen yang dapat Anda gunakan sebagai grup yang dipusingkan dengan _id
  6. Urutkan hasil dalam urutan terbalik untuk melihat tag teratas terlebih dahulu

Dan hal hebat tentang agregasi adalah Anda dapat secara bertahap membangun tahapan tersebut untuk melihat apa yang terjadi.

Kocok dan panggang ke dalam implementasi driver Anda sendiri atau kerangka kerja ODM sesuai kebutuhan.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. beberapa contoh Mongo DB di server yang sama

  2. MongoDB $rand

  3. Repositori Reaktif Data Musim Semi dengan MongoDB

  4. Bagaimana Mengonfigurasi AppArmor untuk Kumpulan Replika MongoDB?

  5. Perbedaan antara mendekorasi properti di C# dengan BsonRepresentation(BsonType.ObjectId) vs BsonId vs ObjectId