2014-01-16 42 views
3

如何使用PyMongo批量刪除多個文檔?如何使用PyMongo批量刪除記錄

如果我們的文檔列表開始,

docs = list(db.animals.find({'color':'red'})) 

執行以下操作實際上並沒有從集合刪除任何東西!

toRemove = [x['_id'] for x in docs] 
db.animals.remove(toRemove) 

批次移除的正確方法是什麼?

+0

確實沒有任何的給出答案解決你的問題?你沒有接受答案,也沒有評論他們如何解決你的問題。 – shx2

回答

3

只需使用remove以同樣的方式您使用find

如果下面的行返回記錄被刪除:

db.animals.find({'color':'red'}) 

,那麼這將其刪除:

db.animals.remove({'color':'red'}) 

如果你已經有ID的列表中刪除,你可以刪除在_id一個過濾器,使用$in運營商,像這樣:

db.animals.remove({'_id': {'$in': idsToRemove}}) 
0

雖然一些輔助的方法來刪除的文檔的陣列可能存在,我不知道,我會說,最好的和最明確的方法是使用一個循環:

for docId in toRemove: 
    db.animals.remove({'_id':docId})