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

Bagaimana cara menambahkan hasil agregasi DB Mongo ke koleksi yang ada?

Memulai Mongo 4.2 , $merge baru operator agregasi (mirip dengan $out ) memungkinkan penggabungan hasil dari pipa agregasi ke dalam koleksi yang ditentukan:

Dengan masukan ini:

db.source.insert([
  { "_id": "id_1", "a": 34 },
  { "_id": "id_3", "a": 38 },
  { "_id": "id_4", "a": 54 }
])
db.target.insert([
  { "_id": "id_1", "a": 12 },
  { "_id": "id_2", "a": 54 }
])

$merge tahap agregasi dapat digunakan sebagai berikut:

db.source.aggregate([
  // { $whatever aggregation stage, for this example, we just keep records as is }
  { $merge: { into: "target" } }
])

untuk menghasilkan:

// > db.target.find()
{ "_id" : "id_1", "a" : 34 }
{ "_id" : "id_2", "a" : 54 }
{ "_id" : "id_3", "a" : 38 }
{ "_id" : "id_4", "a" : 54 }

Perhatikan bahwa $merge operator hadir dengan banyak opsi untuk menentukan cara menggabungkan catatan yang disisipkan yang bertentangan dengan catatan yang ada.

Dalam hal ini (dengan opsi default), ini:

  • menyimpan dokumen koleksi target yang ada (ini adalah kasus { "_id": "id_2", "a": 54 } )

  • menyisipkan dokumen dari output pipa agregasi ke dalam koleksi target saat dokumen tersebut belum ada (berdasarkan _id - ini adalah kasus { "_id" : "id_3", "a" : 38 } )

  • menggantikan catatan koleksi target ketika pipa agregasi menghasilkan dokumen yang ada di koleksi target (berdasarkan _id - ini adalah kasus { "_id": "id_1", "a": 12 } diganti dengan { "_id" : "id_1", "a" : 34 } )



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Mongodb windows setup admin web console menunggu koneksi pada kesalahan port 28017

  2. Nodejs Mongoose - bagaimana cara menghindari panggilan balik?

  3. Hitung turunan orde pertama dengan kerangka agregasi MongoDB

  4. PyMongo upsert melempar upsert harus menjadi contoh kesalahan bool

  5. Apakah memasukkan banyak dokumen dalam Koleksi Meteor berfungsi sama dengan mongodb murni?