sql >> Database teknologi >  >> NoSQL >> MongoDB

Spørgsmål om safe=Sand parameter for opdatering af mongodb

try og except aldrig få en undtagelse til at blive kastet. De håndterer simpelthen smidte undtagelser.

Hvis update kaster en undtagelse ved fejl, except vil håndtere undtagelsen, så fortsætter løkken (medmindre du bruger raise i except klausul).

Hvis update kaster ikke en undtagelse ved fejl, men returnerer i stedet None (eller sådan noget), og du vil det for at kaste en undtagelse, kan du bruge:

if coll.update(...) is None: # or whatever it returns on failure
    raise ValueError # or your custom Exception subclass

Bemærk, at du altid skal angive, hvilken undtagelse du vil fange, og kun omgive de kodelinjer, hvor du vil fange den med try , så du ikke skjuler andre fejl i din kode:

for record in coll.find(<some query here>):
   #Code here
   #...
   #...
   try:
       coll.update({ '_id' : record['_id'] },record,safe=True)
   except SpecificException:
        #Handle exception here
   except OtherSpecificException:
        #Handle exception here
   else:
        #extra stuff to do if there was no exception

Se try Erklæring , Indbyggede undtagelser , og fejl og undtagelser .



  1. Mongoid Group By eller MongoDb gruppe af i skinner

  2. MongoDB:aggregeret $project add-felt med statisk værdi

  3. Opret et wildcard-tekstindeks i MongoDB

  4. $først i mongodb