Objek pembaruan mongodb dalam array

Di MongoDB, operator $push digunakan untuk menambahkan nilai tertentu ke array. Jika bidang yang disebutkan tidak ada dalam dokumen yang akan diperbarui, operator $push menambahkannya sebagai bidang baru dan menyertakan nilai yang disebutkan sebagai elemennya. Jika bidang pemutakhiran bukan bidang jenis larik, operasi gagal

Pada saat memperbarui jika nilai itu sendiri adalah sebuah larik, operator $push menambahkan seluruh larik sebagai elemen tunggal

Jika Anda ingin menambahkan setiap elemen dari nilai secara terpisah, operator $push dapat digunakan dengan pengubah $each

Sintaksis

db.collection.update( <query>,{ $push: { <field>: <value> } })

Parameter

NamaKeteranganbidangnama kolom atau bidang ke dokumen. nilai. Ini adalah nilai yang akan ditentukan untuk bidang atau kolom. kueriKueri dapat berupa ekspresi atau kondisi atau kriteria

Koleksi sampel "siswa"

{
        "_id" : 1,
        "sem" : 1,
        "subjects" : [
                "phys",
                "chem",
                "maths",
                "gkn",
                "stat",
                "astro"
        ],
        "achieve" : [
                70,
                87,
                90,
                90,
                65,
                81
        ]
}

_

Contoh operator $push MongoDB

Jika kita ingin menambahkan 95 ke bidang array yang dicapai dengan kondisi subjek adalah "gkn", perintah mongodb berikut dapat digunakan -

> db.student.update( { "subjects" : "gkn" },{ $push: { "achieve": 95 } });

Di sini, dalam contoh di atas $each pengubah telah digunakan untuk menambahkan beberapa elemen 77,49,83 ke array reach yang cocok dengan kondisi subject sama dengan "gkn"

Untuk memperbarui objek di dalam array bersarang di MongoDB Anda dapat menggunakan pendekatan ini, Ini telah teruji dengan baik dan berfungsi

Kasus

Perbarui objek array bersarang. Lihat gambar di bawah untuk Ide yang lebih baik tentang apa yang akan kita lakukan. Kami akan memperbarui objek yang bersarang dengan 3 level array

{
 discussionList[
  discussionList [
   {
     object-value-to-be-updated.
   }
  ]
 ]
} 

Masuk ke mode layar penuh Keluar dari mode layar penuh

Objek pembaruan mongodb dalam array

Larutan

public courseCategoryPostCommentReplyUpdate(operation: CommentReplyUpdateMutation): Promise<IDocumentUpdateType> {
    return this.courseCategoryPostCommentsModel.updateOne(
      {
        "postId" : operation.postId,
        'discussionList': {
          '$elemMatch': {
            '_id': operation.commentId,
            "discussionList._id": operation.replyId
          }
        }
      },
      {
        $set: {
          "discussionList.$[outer].discussionList.$[inner].payload": operation.payload,
          "discussionList.$[outer].discussionList.$[inner].isUpdated": true,
          "discussionList.$[outer].discussionList.$[inner].commentUpdateTime": new Date()
        }
      },
      {
        arrayFilters: [
          { "outer._id": operation.commentId},
          {"inner._id": operation.replyId}

      ]
      }
    );
  }
_

Masuk ke mode layar penuh Keluar dari mode layar penuh

FootNotes - kode ini untuk memperbarui balasan komentar

Begitulah cara Anda dapat melakukan operasi pada objek dalam array bersarang dalam dokumen mongoDB. Anda juga dapat memperbarui/menghapus objek yang memiliki tingkat lebih bersarang hanya dengan memodifikasi kueri

Contoh hapus dan dapatkan

Menghapus

// Informational Note:
  // Delete nested array values in mongodb


  public courseCategoryPostCommentReplyDelete(operation: CommentReplyDeleteMutation): Promise<IDocumentUpdateType> {
    return this.courseCategoryPostCommentsModel.updateOne(
      {
        'postId': operation.postId,

        'discussionList': {
          '$elemMatch': {
            '_id': operation.commentId,
            'discussionList._id': operation.replyId
          }
        }
      }, {
        $pull: {
          'discussionList.$[outer].discussionList': {
            user: operation.userId,
            _id: operation.replyId
          }
        }
      },
      {
        arrayFilters: [
          { 'outer._id': operation.commentId }
        ],
        multi: false
      }
    );
  }
}

Masuk ke mode layar penuh Keluar dari mode layar penuh

DAPATKAN

public courseCategoryPostCommentRead(postId: string): Promise<IComment> {
    return this.courseCategoryPostCommentsModel.findOne<IComment>({
      postId: postId
    }).populate('discussionList.user').populate('discussionList.discussionList.user').exec();
  }
_

Masuk ke mode layar penuh Keluar dari mode layar penuh

Saya menggunakan GraphQL. Anda mungkin perlu mengulangi hasilnya dan menunjukkan komentar/balasan sesuai itu

Bagaimana cara memperbarui objek dalam array di MongoDB?

Untuk melakukan pembaruan pada semua elemen larik tersemat dari setiap dokumen yang cocok dengan kueri Anda, gunakan operator posisi yang difilter $[ ] menentukan elemen larik yang cocok dalam dokumen pembaruan.

Bagaimana Anda memperbarui objek tertentu dalam sebuah array?

Untuk memperbarui objek dalam larik JavaScript, Anda dapat menggunakan metode findIndex() untuk mengeksekusi setiap elemen larik dan memperbarui nilai objek yang sesuai .

Bagaimana cara memperbarui nilai objek di MongoDB?

Shell MongoDB menyediakan metode berikut untuk memperbarui dokumen dalam koleksi. .
Untuk memperbarui satu dokumen, gunakan db. koleksi. perbaruiSatu()
Untuk memperbarui banyak dokumen, gunakan db. koleksi. updateBanyak()
Untuk mengganti dokumen, gunakan db. koleksi. gantiSatu()

Bagaimana cara memperbarui array objek bersarang di MongoDB?

Memperbarui susunan objek bersarang .
db. koleksi. .
Operator $set mengganti nilai bidang dengan nilai yang ditentukan
The filtered positional operator $[] identifies the array elements that match the arrayFilters conditions for an update operation..