sql >> Databasteknik >  >> NoSQL >> MongoDB

Fråga om safe=True parameter för uppdatering av mongodb

try och except aldrig orsaka ett undantag. De hanterar helt enkelt slängda undantag.

Om update kastar ett undantag vid misslyckande, except kommer att hantera undantaget, sedan fortsätter loopen (om du inte använder raise i except klausul).

Om update ger inget undantag vid misslyckande, utan returnerar istället None (eller något liknande), och du vill för att skapa ett undantag kan du använda:

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

Observera att du alltid ska ange vilket undantag du vill fånga, och bara omge kodraderna där du vill fånga det med try , så att du inte döljer andra fel i din kod:

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 Uttalande , Inbyggda undantag och Fel och undantag .



  1. Använder StackExchange.Redis-klient med Redis-kluster

  2. Struktur och frågesyntax för rekursiva dokument i MongoDB?

  3. Hur söker man efter användare med både för- och efternamn med MongoDB?

  4. MongoDB $strLenBytes