我从服务中收到过期的文件清单。我想将这些文档从我的主集合中删除到一个存档集合中。我收到的一些文件不在我的主要收藏中,我想忽略这些文件。
我可以首先在我的主集合中查找文档,如果我发现它将文档插入到存档中,那么在成功时将其从主集合中删除。
是否可以使用批量操作进行此类条件移动?我需要这个能够合理地快速地工作,一次可能有数千个文档。
答案 0 :(得分:1)
是。您可以批量查找,插入和删除操作。您可以使用bulk write operation进行插入。听起来你有一个$in
的列表或类似的文件,你用来在主集合中找到文件。您应该使用> 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** ] } })
您将收到有关任何错误的通知。插入成功后,从主要文档中删除文档
<div class="ms-thumb">
<div class="ms-product-thumb">
<div class="ms-thumb-hover">
.ms-thumb-hover
</div>
</div>
<div class="ms-thumb-desc">
on this mouseover: make '.ms-thumb-hover' red!
</div>
</div>