2016-05-03 8 views
1

Gibt es eine Möglichkeit, MongoDB zu übergehen (statt zu crashen), wenn wir ein Dokument einfügen wollen, das dasselbe _id als ein existierendes hat?Überspringe die gleiche ID während MongoDB insertMany

Sag mal, habe ich diese Liste und ich mag es bestehen:

to_mongo = [ 
    {'_id': 'aaaaaa', 'content': 'hey'}, 
    {'_id': 'bbbbbb', 'content': 'you'}, 
    {'_id': 'aaaaaa', 'content': 'hey'} 
] 

mongo_collection.insert_many(to_mongo) 

ich das letzte Element möchte einfach ignoriert werden, anstatt den gesamten Antrag zum Absturz bringen.

Antwort

3

Versuchen Sie, die ordered=False in dem das heißt insert_many() Methode

to_mongo = [ 
    {'_id': 'aaaaaa', 'content': 'hey'}, 
    {'_id': 'bbbbbb', 'content': 'you'}, 
    {'_id': 'aaaaaa', 'content': 'hey'} 
] 
mongo_collection.insert_many(to_mongo, ordered=False) 

Dies stellt sicher, dass alle Schreiboperationen versucht werden, auch wenn es Fehler gibt. Von den docs:

bestellt (optional): Wenn True (Standard) Dokumente auf dem Server seriell in der Reihenfolge vorgesehen ist, eingeführt werden. Wenn ein Fehler auftritt, werden alle verbleibenden Einsätze abgebrochen. Wenn Falsch, werden Dokumente in beliebiger Reihenfolge, möglicherweise parallel, auf dem Server eingefügt, und alle Dokumenteinträge werden versucht.

Verwandte Themen