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

Perbarui atau tambahkan ke subkoleksi di mongo

Saya tidak yakin apakah ada cara langsung untuk melakukan ini dalam satu permintaan,

Perbarui dengan alur agregasi mulai dari MongoDB v4.2,

  • $cond untuk memeriksa nama ada di subColl susunan,
  • kondisi sebenarnya, perlu digabung dengan objek yang sudah ada, $map untuk mengulang loop, periksa kondisi jika cocok dengan kondisi lalu gabungkan objek data baru dengan objek saat ini menggunakan $mergeObjects
  • kondisi salah, perlu menggabungkan array, subColl saat ini array dan objek baru menggunakan $concatArrays
const _id = 123;
const update = { name: 'John', other: 1000 };

Schema.findOneAndUpdate(
  { _id: _id },
  [{
    $set: {
      subColl: {
        $cond: [
          { $in: [update.name, "$subColl.name"] },
          {
            $map: {
              input: "$subColl",
              in: {
                $cond: [
                  { $eq: ["$$this.name", update.name] },
                  { $mergeObjects: ["$$this", update] },
                  "$$this"
                ]
              }
            }
          },
          { $concatArrays: ["$subColl", [update]] }
        ]
      }
    }
  }]
)

Taman bermain




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. geojson luwak dalam skema, Tidak dapat mengekstrak kesalahan kunci geo

  2. Bagaimana Anda membuat serialisasi tipe nilai dengan serializer MongoDB C#?

  3. symfony2 pilihan bentuk dan mongodb

  4. Hapus catatan duplikat dari mongodb 4.0

  5. Menginstal MongoDB di WSL