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

Pilih Max() dengan grup oleh di mongodb

Saya telah membuat Koleksi Mongo sebagai berikut.

{ "_id" : ObjectId("4fb36bfd3d1c88bfa15103b1"), "name" : "bob", "value" : 5 }
{ "_id" : ObjectId("4fb36c033d1c88bfa15103b2"), "name" : "bob", "value" : 3 }
{ "_id" : ObjectId("4fb36c063d1c88bfa15103b3"), "name" : "bob", "value" : 7 }
{ "_id" : ObjectId("4fb36c0c3d1c88bfa15103b4"), "name" : "john", "value" : 2 }
{ "_id" : ObjectId("4fb36c103d1c88bfa15103b5"), "name" : "john", "value" : 4 }
{ "_id" : ObjectId("4fb36c143d1c88bfa15103b6"), "name" : "john", "value" : 8 }
{ "_id" : ObjectId("4fb36c163d1c88bfa15103b7"), "name" : "john", "value" : 6 }

Kemudian dengan menggunakan kode berikut saya mengelompokkannya dengan nama dan max(value)

db.table1.group(
    {key: {name:true},
        reduce: function(obj,prev) { 
            if (prev.maxValue < obj.value) { 
                prev.maxValue = obj.value; 
            }  
        },
    initial: { maxValue: 0 }}
);

Hasilnya ditampilkan sebagai

[
    {
        "name" : "bob",
        "maxValue" : 7
    },
    {
        "name" : "john",
        "maxValue" : 8
    }
]

Ini jauh lebih sederhana dengan kerangka agregasi. Anda bisa mendapatkan hasil yang sama dengan kode berikut dengan menggunakan kerangka kerja agregasi.

db.table1.aggregate([
    {
       $group:{_id:"$name", "maxValue": {$max:"$value"}}
    }
]);


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Kalikan bidang dengan nilai di Mongodb

  2. menyimpan gambar ke mongodb

  3. Kelompokkan dan hitung dengan syarat

  4. Layanan MongoDB tidak berjalan di Fedora

  5. Haruskah saya menggunakan opsi allowDiskUse di lingkungan produk?