有条件地将列表文档从一个集合移动到另一个集合

时间:2015-04-23 15:34:39

标签: node.js mongodb

我从服务中收到过期的文件清单。我想将这些文档从我的主集合中删除到一个存档集合中。我收到的一些文件不在我的主要收藏中,我想忽略这些文件。

我可以首先在我的主集合中查找文档,如果我发现它将文档插入到存档中,那么在成功时将其从主集合中删除。

是否可以使用批量操作进行此类条件移动?我需要这个能够合理地快速地工作,一次可能有数千个文档。

1 个答案:

答案 0 :(得分:1)

是。您可以批量查找,插入和删除操作。您可以使用bulk write operation进行插入。听起来你有一个$in的列表或类似的文件,你用来在主集合中找到文件。您应该使用> my_cursor = db.main.find({ "_id" : { "$in" : [ **1-2K _id's** ] } })

将查找分组为1-2千组
_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>