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

Mongoose / MongoDB:menghitung elemen dalam array

Aha, saya sudah menemukan solusinya. aggregate Mon MongoDB framework memungkinkan kita untuk menjalankan serangkaian tugas pada koleksi. Catatan khusus adalah $unwind , yang memecah larik dalam dokumen menjadi dokumen unik , jadi mereka bisa berkelompok / dihitung secara massal .

MongooseJS mengekspos ini sangat mudah diakses pada model. Menggunakan contoh di atas, ini terlihat sebagai berikut:

Thing.aggregate([
    { $match: { /* Query can go here, if you want to filter results. */ } } 
  , { $project: { tokens: 1 } } /* select the tokens field as something we want to "send" to the next command in the chain */
  , { $unwind: '$tokens' } /* this converts arrays into unique documents for counting */
  , { $group: { /* execute 'grouping' */
          _id: { token: '$tokens' } /* using the 'token' value as the _id */
        , count: { $sum: 1 } /* create a sum value */
      }
    }
], function(err, topTopics) {
  console.log(topTopics);
  // [ foo: 4, bar: 2 baz: 2 ]
});

Ini terasa lebih cepat daripada MapReduce dalam pengujian pendahuluan di ~200,000 catatan, dan dengan demikian kemungkinan skalanya lebih baik, tetapi ini hanya setelah pandangan sepintas. YMMV.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Beberapa contoh server mencoba saat menjalankan lelucon

  2. Bagaimana menerapkan pembaruan menggunakan operator posisi yang Difilter dengan arrayFilters

  3. Apa hak istimewa pengguna MongoDB yang saya perlukan untuk menambahkan pengguna ke database mongo baru/lain?

  4. Aplikasi gagal untuk memulai (port 8080) tidak tersedia

  5. Periksa bahwa Bidang Ada dengan MongoDB