0
我從服務收到過期文檔列表。我想將這些文檔從我的主集合中移除到一個歸檔集合中。我收到的一些文件不在我的主要收藏中,我想忽略這些文件。有條件地批量移動列表文檔從一個集合到另一個
我可以這樣做,首先在我的主集合中找到文檔,如果我找到它將文檔插入到存檔中,然後在成功時從主集合中刪除它。
是否可以使用批量操作進行這種有條件移動?我需要這樣才能合理快速地爲潛在的數千個文檔一次工作。
我從服務收到過期文檔列表。我想將這些文檔從我的主集合中移除到一個歸檔集合中。我收到的一些文件不在我的主要收藏中,我想忽略這些文件。有條件地批量移動列表文檔從一個集合到另一個
我可以這樣做,首先在我的主集合中找到文檔,如果我找到它將文檔插入到存檔中,然後在成功時從主集合中刪除它。
是否可以使用批量操作進行這種有條件移動?我需要這樣才能合理快速地爲潛在的數千個文檔一次工作。
是的。您可以批量查找,插入和刪除操作。您可以使用bulk write operation進行插入。這聽起來像你有一個列表_id
's或類似的文件,你用來找到主要集合中的文件。你應該使用$in
一批發現的成1-2千組:
> my_cursor = db.main.find({ "_id" : { "$in" : [ **1-2K _id's** ] } })
如果_id
是不存在的主要收集,那麼沒什麼大不了的。使用批量操作插入光標的結果:
> my_bulk_insert = db.archive.initializeUnorderedBulkOp()
> my_cursor.forEach(function(doc) {
my_bulk_insert.insert(doc)
}
> my_bulk_insert.execute()
您將被通知任何錯誤。然後刪除從主插入文檔一旦插入成功
> db.main.remove({ "_id" : { "$in" : [ **1-2K _id's** ] } })
在什麼語言? – Braj
node.js - 我會將它添加到問題中 – Carasel