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

C# MongoDB - Bagaimana cara menambah dan menghapus item ke beberapa elemen array bersarang?

Anda dapat mencoba sesuatu seperti di bawah ini pada driver 2.5 dengan versi 3.6.

Menemukan dokumen dengan filter kriteria dan update yang mencakup pengidentifikasi posisi baru untuk memperbarui beberapa elemen dalam array di dalam UpdateOne metode.

$[] memperbarui semua Tags array untuk memasukkan item baru di semua Categories Himpunan. Bertindak sebagai placeholder untuk memperbarui semua elemen dalam array.

Dorong

var filter = Builders<Product>.Filter.Eq("Id", "123");
var update = Builders<Product>.Update.Push("Tags.$[].Categories", "Item 3");
var result = collection.UpdateOne(filter, update);

Tarik

var filter = Builders<Product>.Filter.Eq("Id", "123");
var update = Builders<Product>.Update.Pull("Tags.$[].Categories", "Item 3");
var result = collection.UpdateOne(filter, update);

Informasi Tambahan:

Anda dapat mengatur ArrayFilters opsi di UpdateOptions untuk menerapkan kriteria kueri pada array bersarang untuk mengontrol elemen apa yang akan diperbarui.

Misalnya untuk memperbarui semua Kategori dalam larik Tag di mana setiap tag memiliki Name nama.

var filter = Builders<Product>.Filter.Eq("Id", "123");
var update = Builders<Product>.Update.Push("Tags.$[t].Categories", "Item 3");
var arrayFilters = new List<ArrayFilterDefinition>{ new ArrayFilterDefinition(new BsonDocument("t.Name", "name")) };
var updateOptions = new UpdateOptions({ArrayFilters = arrayFilters});
var result = collection.UpdateOne(filter, update, updateOptions);



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Bagaimana menghubungkan ke instans MongoDB EC2

  2. Mengapa Mongo meminta filter nol di FETCH setelah melakukan IXSCAN

  3. Menyiapkan set replika MongoDB

  4. Koneksi luwak ke set replika

  5. bagaimana cara mengubah cap waktu menjadi tanggal di mongodb?