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

Jumlah pilih MongoDB (berbeda x) pada kolom yang diindeks - hitung hasil unik untuk kumpulan data besar

1) Cara termudah untuk melakukannya adalah melalui kerangka kerja agregasi. Ini membutuhkan dua perintah "$group":yang pertama mengelompokkan berdasarkan nilai yang berbeda, yang kedua menghitung semua nilai yang berbeda

pipeline = [ 
    { $group: { _id: "$myIndexedNonUniqueField"}  },
    { $group: { _id: 1, count: { $sum: 1 } } }
];

//
// Run the aggregation command
//
R = db.runCommand( 
    {
    "aggregate": "myCollection" , 
    "pipeline": pipeline
    }
);
printjson(R);

2) Jika Anda ingin melakukan ini dengan Map/Reduce, Anda bisa. Ini juga merupakan proses dua fase:di fase pertama kami membangun koleksi baru dengan daftar setiap nilai yang berbeda untuk kunci tersebut. Di detik kami melakukan count() pada koleksi baru.

var SOURCE = db.myCollection;
var DEST = db.distinct
DEST.drop();


map = function() {
  emit( this.myIndexedNonUniqueField , {count: 1});
}

reduce = function(key, values) {
  var count = 0;

  values.forEach(function(v) {
    count += v['count'];        // count each distinct value for lagniappe
  });

  return {count: count};
};

//
// run map/reduce
//
res = SOURCE.mapReduce( map, reduce, 
    { out: 'distinct', 
     verbose: true
    }
    );

print( "distinct count= " + res.counts.output );
print( "distinct count=", DEST.count() );

Perhatikan bahwa Anda tidak dapat mengembalikan hasil peta/pengurangan sebaris, karena hal itu berpotensi melampaui batas ukuran dokumen 16 MB. Anda bisa simpan perhitungan dalam koleksi dan kemudian hitung() ukuran koleksi, atau Anda bisa mendapatkan jumlah hasil dari nilai kembalian mapReduce().



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Pengecualian mengautentikasi MongoCredential dan Pengecualian Mongo Db Uncategorized

  2. Cara membuat indeks di MongoDB melalui .NET

  3. Di MongoDB bagaimana cara mengembalikan hanya sebagian dari array?

  4. Pembaruan Perubahan Lisensi SSL MongoDB

  5. Keamanan Basis Data 101:Memahami Hak Istimewa Akses Basis Data