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

Grup Mongoid Oleh atau grup MongoDb oleh dalam rel

Seperti yang disebutkan dalam komentar, Anda dapat menggunakan peta/pengurangan untuk tujuan ini. Jadi Anda dapat menentukan metode berikut dalam model Anda ( http://mongoid.org/en/mongoid/docs/querying.html#map_reduce )

def self.today
  map = %Q{
    function() {
      emit(this.course_id, {count: 1})
    }
  }

  reduce = %Q{
    function(key, values) {
      var result = {count: 0};
      values.forEach(function(value) {
        result.count += value.count;
      });
      return result;
    }
  }

  self.where(:created_at.gt => Date.today, status: "played").
    map_reduce(map, reduce).out(inline: true)
end

yang akan menghasilkan hasil berikut:

[{"_id"=>1.0, "value"=>{"count"=>2.0}}, {"_id"=>2.0, "value"=>{"count"=>1.0}}] 

dimana _id adalah course_id dan count adalah jumlah pemutaran.

Ada juga metode grup khusus di MongoDB tetapi saya tidak yakin bagaimana cara mendapatkan koleksi mongodb kosong di Mongoid 3. Saya belum memiliki kesempatan untuk menyelami kode sebanyak itu.

Anda mungkin bertanya-tanya mengapa saya mengeluarkan dokumen {count: 1} karena itu tidak terlalu penting dan saya bisa saja mengeluarkan dokumen kosong atau apa pun dan kemudian selalu menambahkan 1 ke result.count untuk setiap nilai. Masalahnya adalah pengurangan tidak dipanggil jika hanya satu emisi yang dilakukan untuk kunci tertentu (dalam contoh saya course_id telah dimainkan hanya sekali) jadi lebih baik untuk mengeluarkan dokumen dalam format yang sama sebagai hasilnya.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Tidak dapat mengautentikasi ke mongo, autentikasi gagal

  2. Bisakah Anda memiliki mongo $push prepend alih-alih menambahkan?

  3. MongoDB:Bagaimana cara memperbarui satu subelemen dalam array, yang direferensikan oleh indeks di dalam array?

  4. Handlebars:Akses telah ditolak untuk menyelesaikan properti dari karena itu bukan milik sendiri dari induknya

  5. menanyakan koleksi tanpa melewati skema di luwak