MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Как да актуализирате стойности с помощта на pymongo?

Можете да използвате синтаксиса $set, ако искате да зададете стойността на документ на произволна стойност. Това или ще актуализира стойността, ако атрибутът вече съществува в документа, или ще го създаде, ако не го прави. Ако трябва да зададете една стойност в речник, както описвате, можете да използвате нотацията с точки за достъп до дъщерни стойности.

Ако p е извлеченият обект:

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

За версии на pymongo <3.0

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

За версии на pymongo>=3.0

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

Ако обаче просто трябва да увеличите стойността, този подход може да доведе до проблеми, когато няколко заявки могат да се изпълняват едновременно. Вместо това трябва да използвате синтаксиса $inc:

За версии на pymongo <3.0:

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

За версии на pymongo>=3.0:

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

Това гарантира, че вашите увеличения винаги ще се случват.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Могат ли строги JSON $dates да се използват в заявка на MongoDB?

  2. Сравнение на дати в mongodb

  3. Вземете името на месеца от дата в SQL

  4. VersionError:Няма намерен съответстващ документ грешка в Node.js/Mongoose

  5. mongodb:Многоключова структура на индексиране?