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

Bagaimana cara memperbarui nilai menggunakan pymongo?

Anda dapat menggunakan sintaks $set jika Anda ingin mengatur nilai dokumen ke nilai arbitrer. Ini akan memperbarui nilai jika atribut sudah ada di dokumen atau membuatnya jika tidak ada. Jika Anda perlu menetapkan satu nilai dalam kamus seperti yang Anda jelaskan, Anda dapat menggunakan notasi titik untuk mengakses nilai turunan.

Jika p adalah objek yang diambil:

existing = p['d']['a']

Untuk versi pymongo <3.0

db.ProductData.update({
  '_id': p['_id']
},{
  '$set': {
    'd.a': existing + 1
  }
}, upsert=False, multi=False)

Untuk versi pymongo>=3.0

db.ProductData.update_one({
  '_id': p['_id']
},{
  '$set': {
    'd.a': existing + 1
  }
}, upsert=False)

Namun jika Anda hanya perlu menaikkan nilainya, pendekatan ini dapat menimbulkan masalah ketika beberapa permintaan dapat berjalan secara bersamaan. Sebagai gantinya, Anda harus menggunakan sintaks $inc:

Untuk versi pymongo <3.0:

db.ProductData.update({
  '_id': p['_id']
},{
  '$inc': {
    'd.a': 1
  }
}, upsert=False, multi=False)

Untuk versi pymongo>=3.0:

db.ProductData.update_one({
  '_id': p['_id']
},{
  '$inc': {
    'd.a': 1
  }
}, upsert=False)

Ini memastikan kenaikan Anda akan selalu terjadi.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Cara menulis kueri gabungan di mongoDB

  2. Bagaimana mengelola dokumen di MongoDB

  3. Cara Menggunakan Pengumpulan Koneksi MongoDB di AWS Lambda

  4. MongoDB Temukan kinerja:indeks gabungan tunggal VS dua indeks bidang tunggal

  5. MongooseError - Operasi buffering `users.findOne()` habis setelah 10000ms