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

Bagaimana cara menggunakan $set dan notasi titik untuk memperbarui elemen array yang disematkan menggunakan elemen lama yang sesuai?

Jika bidang tersebut adalah anggota larik dengan memilihnya, Anda memilih semuanya.

{ar :[{"a" : 1}, {"a" : 2}]}

"$ar.a" = [1 ,2]

Anda juga tidak dapat mencampur operator pembaruan dengan agregasi, Anda tidak dapat menggunakan hal-hal seperti$sites.$.energy_consumption , jika Anda melakukan agregasi, Anda harus menggunakan operator agregat, kecuali $match tahap di mana Anda dapat menggunakan operator kueri.

Kueri

  • solusi alternatif yang sedikit berbeda dari Anda menggunakan $setField
  • Saya kira itu akan lebih cepat, tapi mungkin sedikit perbedaan
  • tidak perlu menggunakan javascript itu akan lebih lambat
  • ini adalah>=solusi MongoDB 5, $setField adalah operator baru

Uji kode di sini

aggregate(
[{"$set":
  {"sites":
   {"$map":
    {"input":"$sites",
     "in":
     {"$setField":
      {"field":"new_field",
       "input":"$$this",
       "value":"$$this.energy_consumption"}}}}}}]
)


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Dokumen bersarang Java MongoDB tidak dapat diakses menggunakan titik di nama kunci

  2. Temukan url duplikat di mongodb

  3. Bagaimana cara menguji indeks Mongo dalam tes integrasi?

  4. Mongoose - Skema yang sama untuk koleksi yang berbeda di (MongoDB)

  5. Buat agregasi filter di musim semi