sql >> Databasteknik >  >> NoSQL >> MongoDB

Hur uppdaterar man värden med pymongo?

Du kan använda $set-syntaxen om du vill ställa in värdet på ett dokument till ett godtyckligt värde. Detta kommer antingen att uppdatera värdet om attributet redan finns i dokumentet eller skapa det om det inte gör det. Om du behöver ange ett enda värde i en ordbok som du beskriver kan du använda punktnotationen för att komma åt underordnade värden.

Om p är det hämtade objektet:

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

För pymongo-versioner <3.0

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

För pymongo-versioner>=3.0

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

Men om du bara behöver öka värdet kan detta tillvägagångssätt skapa problem när flera förfrågningar kan köras samtidigt. Istället bör du använda $inc-syntaxen:

För pymongo-versioner <3.0:

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

För pymongo-versioner>=3.0:

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

Detta säkerställer att dina ökningar alltid kommer att ske.



  1. Hitta nycklar som inte löper ut i Redis

  2. Bygg en reaktiv publikation med ytterligare fält i varje dokument

  3. mongodb:hitta det högsta numeriska värdet i en kolumn

  4. Frågar arrayelement med Mongo