Bagaimana kursor agregasi bereaksi terhadap operasi CRUD(remove R) dalam koleksi yang digunakan? Sebagai contoh:

db.collection('aggregate')
.aggregate([
      {$match: {}},
      {$project:
        { newField: {$literal: "new value"} }
      }
]).each(function(err, doc) {      
  // do editin inserting and removing on 'aggregate' collection    
 print(doc)
});

Apakah ada kemungkinan algoritme akan mencetak catatan yang ditambahkan atau diubah selama operasinya?

1
CallMeMB 5 Januari 2018, 04:30

1 menjawab

Jawaban Terbaik

Apakah ada kemungkinan algoritme akan mencetak catatan yang ditambahkan atau diubah selama operasinya?

Tidak. Saat Operasi Agregat dilakukan, akan ada kunci Intent Shared (IS) yang diterapkan pada koleksi, yang berarti hanya operasi baca yang dapat terjadi secara bersamaan. Setiap operasi Buat, Perbarui, atau Hapus harus menunggu hingga kunci dilepas, karena operasi pembaruan memerlukan kunci Eksklusif (X) yang diterapkan.

Referensi :

  1. Jenis Penguncian MongoDB - https:// /docs.mongodb.com/manual/faq/concurrency/#what-type-of-locking-does-mongodb-use.

  2. Tutorial MongoDB - Kunci MongoDB Contoh

Operasi agregasi memproses catatan data dan mengembalikan hasil yang dihitung. Kursor diterapkan pada hasil yang dihitung. Perubahan apa pun pada koleksi setelah agregasi tidak memengaruhi hasil yang sudah dihitung.

2
Mallikarjun M 2 Februari 2018, 12:07