2016-04-25 137 views
2

這可能是一個noobie問題,但是,如何(有效)從一個與另一個集合中找到的文檔匹配的mongodb集合中刪除所有文檔?例如,使用蒙戈外殼,我們可以做到以下幾點:從另一個集合中匹配的一個mongo集合中刪除文檔

db.getCollection('coll1').find({}).forEach(function(doc) { 
    db.getCollection('coll2').remove({ name: doc.name, value: doc.value }); 
    }) 

回答

0

我會建議在刪除使用$通過傳遞名稱或ID的數組中$的數組中刪除它做。

db.getCollection('coll1').find({}).forEach(function(doc) { 
 
    
 
    // create idsArray from the doc data and pass same in $in 
 
    
 
    db.getCollection('coll2').remove({ id: { $in: idsArray }); 
 
    })

我跳它將幫助。 :)

+0

我不確定這有助於@Lucky。隨後的移除調用將在doc.name和doc.value上執行查找匹配,這是我想要消除的兩個字段。我有一個我自己的後續建議,加快刪除。如果我在'coll2'上創建一個索引,那麼remove中的查找操作會更快。 'db.getCollection('coll2')。createIndex({name:1});'' –

相關問題