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

Menerapkan kondisi ke beberapa dokumen untuk bidang yang sama di MongoDB

Karena MongoDB tidak memiliki konsep penggabungan, Anda perlu mengatasinya dengan mengurangi input Anda menjadi satu dokumen.

Jika Anda mengubah struktur dokumen Anda sehingga Anda menyimpan array tag, seperti berikut:

{id: 123,  tag:["tag1","tag2","tag3"]}
{id: 456,  tag:["tag1"]}

Anda dapat melakukan kueri seperti berikut:

db.user.find({$and:[{tag:"tag1"},{tag:"tag2"},{tag:"tag3"}]})

Jika diperlukan, Anda dapat menulis pengurangan peta untuk memancarkan larik tag untuk ID pengguna, sehingga Anda dapat melakukan kueri di atas.

Edit - Menyertakan pengurangan peta sederhana

Berikut ini adalah pengurangan peta yang sangat sederhana untuk mendapatkan input awal ke dalam format yang berguna untuk find kueri yang diberikan di atas.

var map = function() {emit(this.id, {tag:[this.tag]});}
var reduce = function(key, values){
   var result_array=[];
   values.forEach(function(v1){             
       v1.tag.forEach(function(v2){
        result_array.push(v2);
        });
    });
return {"tag":result_array};}

var op = db.user.mapReduce(map, reduce, {out:"mr_results"})

Kemudian Anda dapat melakukan kueri pada koleksi keluaran pengurangan peta, seperti berikut:

db.mr_results.find({$and:[{"value.tag":"tag1"},{"value.tag":"tag2"}, {"value.tag":"tag3"}]})



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. urutkan berdasarkan panjang string di Mongodb/pymongo

  2. 2 Cara Membatasi Dokumen yang Dikembalikan di MongoDB

  3. Perbedaan antara bidang id dan _id di MongoDB

  4. Cara Menggabungkan String dalam SQL

  5. Akankah transaksi bekerja dengan agregasi mongodb $merge?