Rumah >hujung hadapan web >tutorial js >Bagaimana untuk mengalih keluar Objek Tertentu daripada Array dalam MongoDB?

Bagaimana untuk mengalih keluar Objek Tertentu daripada Array dalam MongoDB?

DDD
DDDasal
2024-11-02 07:26:291043semak imbas

How to Remove a Specific Object from an Array in MongoDB?

MongoDB: Mengalih keluar Objek daripada Array

Masalah:

Dalam MongoDB, bagaimana anda mengekstrak objek tertentu daripada tatasusunan yang tertanam dalam dokumen? Dalam dokumen contoh, kami ingin mengalih keluar objek dengan id: 23 daripada tatasusunan item.

Penyelesaian:

Untuk mencapai ini, gunakan operator $pull dengan pertanyaan yang lebih khusus untuk memadankan objek yang dikehendaki dalam tatasusunan.

Pertanyaan MongoDB:

db.mycollection.update(
    { '_id': ObjectId("5150a1199fac0e6910000002") }, 
    { $pull: { items: { id: 23 } } },
    false, // Upsert
    true // Multi
);

Penjelasan:

  • $pull operator: Digunakan untuk mengalih keluar elemen daripada tatasusunan.
  • { item: { id: 23 } }: Tentukan objek bersarang untuk dialih keluar dengan memadankan medan khususnya.
  • Upsert: Tetapkan kepada palsu untuk menghalang pembuatan dokumen baharu jika kemas kini tidak sepadan dengan mana-mana dokumen sedia ada.
  • Berbilang: Tetapkan kepada benar untuk menggunakan kemas kini kepada berbilang dokumen yang sepadan (walaupun hanya perlu ada satu padanan dalam kes ini).

Node.js/Mongoose:

Dalam Mongoose, anda boleh menggunakan pertanyaan berikut:

<code class="javascript">MyModel.findOneAndUpdate(
  { '_id': '5150a1199fac0e6910000002' },
  { $pull: { items: { id: 23 } } },
  { multi: true }
);</code>

Nota: MongoDB 3.6 juga menyokong pengendali $elemMatch bersama-sama dengan $pull untuk penapisan yang lebih kompleks dalam tatasusunan.

Atas ialah kandungan terperinci Bagaimana untuk mengalih keluar Objek Tertentu daripada Array dalam MongoDB?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn