sql >> Databáze >  >> NoSQL >> MongoDB

Jak aktualizovat hodnoty pomocí pymongo?

Syntaxi $set můžete použít, pokud chcete nastavit hodnotu dokumentu na libovolnou hodnotu. Tím se buď aktualizuje hodnota, pokud atribut již v dokumentu existuje, nebo se vytvoří, pokud ne. Pokud potřebujete nastavit jednu hodnotu ve slovníku, jak popisujete, můžete pro přístup k podřízeným hodnotám použít tečkovou notaci.

Pokud p je objekt načtený:

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

Pro verze pymongo <3.0

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

Pro verze pymongo>=3.0

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

Pokud však potřebujete pouze zvýšit hodnotu, tento přístup by mohl způsobit problémy, když by mohlo souběžně běžet více požadavků. Místo toho byste měli použít syntaxi $inc:

Pro verze pymongo <3.0:

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

Pro verze pymongo>=3.0:

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

To zajistí, že vaše přírůstky budou vždy probíhat.



  1. MongoDB $strcasecmp

  2. Požadavky na prostor datové struktury Redis

  3. potíže s připojením k redis, aby bylo možné použít více pracovních kues

  4. MongoDB $ceil