MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Jak zaktualizować wartości za pomocą pymongo?

Możesz użyć składni $set, jeśli chcesz ustawić wartość dokumentu na dowolną wartość. Spowoduje to zaktualizowanie wartości, jeśli atrybut już istnieje w dokumencie, lub utworzenie go, jeśli tak nie jest. Jeśli potrzebujesz ustawić pojedynczą wartość w słowniku, tak jak opisujesz, możesz użyć notacji z kropkami, aby uzyskać dostęp do wartości podrzędnych.

Jeśli p jest pobranym obiektem:

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

Dla wersji pymongo <3.0

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

Dla wersji pymongo>=3.0

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

Jeśli jednak potrzebujesz tylko zwiększyć wartość, to podejście może spowodować problemy, gdy wiele żądań może działać jednocześnie. Zamiast tego powinieneś użyć składni $inc:

Dla wersji pymongo <3.0:

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

Dla wersji pymongo>=3.0:

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

Gwarantuje to, że Twoje przyrosty będą miały miejsce zawsze.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Wyszukiwanie agregacji Mongodb z warunkami

  2. MongoDB $indexOfBytes

  3. MongoDB - Utwórz kopię zapasową

  4. Jak pobrać wartość z mongoDB według nazwy klucza?

  5. Obraz zwrócony z REST API zawsze wyświetla uszkodzony