sql >> Database >  >> NoSQL >> MongoDB

Hoe waarden bijwerken met pymongo?

U kunt de $set-syntaxis gebruiken als u de waarde van een document op een willekeurige waarde wilt instellen. Hiermee wordt de waarde bijgewerkt als het kenmerk al in het document bestaat of wordt het gemaakt als dat niet het geval is. Als u een enkele waarde in een woordenboek moet instellen zoals u beschrijft, kunt u de puntnotatie gebruiken om toegang te krijgen tot onderliggende waarden.

Als p het gevonden object is:

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

Voor pymongo-versies <3.0

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

Voor pymongo-versies>=3.0

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

Als u echter alleen de waarde hoeft te verhogen, kan deze benadering problemen veroorzaken wanneer meerdere verzoeken tegelijkertijd kunnen worden uitgevoerd. Gebruik in plaats daarvan de $inc-syntaxis:

Voor pymongo-versies <3.0:

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

Voor pymongo-versies>=3.0:

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

Dit zorgt ervoor dat uw verhogingen altijd plaatsvinden.



  1. E-mailindexering met Cloudera Search en HBase

  2. Hoe mongodb opvragen met "like" met behulp van de java-api?

  3. Een beveiligingschecklist voor MongoDB-productie-implementaties

  4. MongoDB - Een database maken