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

Bagaimana cara mengganti nama bidang di dalam array dengan perintah database?

  • Kesalahan mengatakan $map input menerima bidang referensi menggunakan $ tanda tangani $version ,
  • lampirkan u objek dalam braket array untuk pembaruan dengan alur agregasi
  • masukkan saja kedua kolom title dan version di $map
  • $unset tidak diperlukan karena $map akan mengganti data lama dengan bidang baru di in
db.runCommand({
    update: 'apps',
    updates: [
        {
            q: { "versions.name": { $exists: true } },
            u: [{
                $set: {
                    versions: {
                        $map: {
                            input: "$versions",
                            in: {
                                "title": "$$this.name",
                                "version": "$$this.version"
                            }
                        }
                    }
                }
            }],
            multi: true
        }
    ]
})

Taman bermain

Cara kedua, Untuk pendekatan yang lebih dinamis

  • $mergeObjects di dalam $map , untuk mencegah daftar manual pasangan nilai kunci
  • $unset panggung untuk menghapus name bidang dari version susunan
db.runCommand({
    update: 'apps',
    updates: [
        {
            q: { "versions.name": { $exists: true } },
            u: [
              {
                $set: {
                    versions: {
                        $map: {
                            input: "$versions",
                            in: {
                                $mergeObjects: [
                                    "$$this",
                                    { "title": "$$this.name" }
                                ]
                            }
                        }
                    }
                }
              },
              { $unset: "versions.name" }
            ],
            multi: true
        }
    ]
})

Taman bermain




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Cara Menyebarkan MongoDB untuk Ketersediaan Tinggi

  2. Menjalankan Mongo like Query (JSON) melalui Java

  3. luwak findById berfungsi ketika saya menggunakan string literal tetapi tidak ketika saya mereferensikan properti suatu Objek

  4. GroupBy Aggregation termasuk tanggal yang hilang di mongo

  5. MongoDB - Setara dengan LEFT JOIN di mana satu koleksi tidak ada