2016-05-03 28 views
1

如果我們想插入一個與現有的文檔具有相同_id的文檔,是否有告訴MongoDB跳過(而不是崩潰)的方法?在MongoDB插入過程中跳過相同的ID很多

說,我有這個名單,我想堅持它:

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

mongo_collection.insert_many(to_mongo) 

我想最後一個項目將被完全忽略,而不是造成整個請求崩潰。

回答

3

嘗試在insert_many()方法使用ordered=False

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

這可以確保所有的寫操作都嘗試,即使有錯誤。從docs

有序(可選):如果爲True(默認),文件將在服務器上插入 順序,按提供的順序。如果發生錯誤,所有 剩餘的插入被中止。如果爲False,將以任意順序將 文件插入到文件中,可能並行,並且將嘗試所有文件 插入。