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

Mongodb memperbarui subdokumen yang sangat bersarang

Sayangnya, Anda tidak dapat menggunakan $ operator lebih dari sekali per tombol, jadi Anda harus menggunakan nilai numerik untuk sisanya. Seperti dalam:

db.myCollection.update({
    "id": 1, 
    "forecasts.forecast-id": 123, 
    "forecasts.levels.level": "proven", 
    "forecasts.levels.configs.config": "Custom 1"
  },
  {"$set": {"forecasts.$.levels.0.configs.0": newData}}
)

Dukungan MongoDB untuk memperbarui array bersarang buruk. Jadi, sebaiknya hindari penggunaannya jika Anda perlu sering memperbarui data, dan pertimbangkan untuk menggunakan beberapa koleksi sebagai gantinya.

Satu kemungkinan:buat forecasts koleksinya sendiri, dan dengan asumsi Anda memiliki set level yang tetap nilai, buat level objek alih-alih array:

{
  _id: 123,
  parentId: 1,
  name: "Forecast 1", 
  levels: {
    proven: { 
      configs: [
        { 
          config: "Custom 1",
          variables: [{ x: 1, y:2, z:3}]
        }, 
        { 
          config: "Custom 2",
          variables: [{ x: 10, y:20, z:30}]
        }, 
      ]
    },
    likely: {
      configs: [
        { 
          config: "Custom 1",
          variables: [{ x: 1, y:2, z:3}]
        }, 
        { 
          config: "Custom 2",
          variables: [{ x: 10, y:20, z:30}]
        }, 
      ]
    }
  }
}

Kemudian Anda dapat memperbaruinya menggunakan:

db.myCollection.update({
    _id: 123,
    'levels.proven.configs.config': 'Custom 1'
  },
  { $set: { 'levels.proven.configs.$': newData }}
)


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB $toDate

  2. Sambungkan kembali dengan andal ke MongoDB

  3. Bagaimana cara mengatasi masalah terkait mongoDB secara efisien?

  4. Kueri bersarang luwak pada Model berdasarkan bidang model yang direferensikannya

  5. Dorong nilai baru ke array dalam mongodb - mongodb/php