【问题标题】:Conditionally bulk move a list documents from one collection to another有条件地将列表文档从一个集合批量移动到另一个集合
【发布时间】:2015-04-27 22:17:59
【问题描述】:

我从服务中收到一份过期文件列表。我想将这些文档从我的主要收藏中删除到存档收藏中。我收到的一些文件不会在我的主要收藏中,我想忽略这些文件。

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

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

【问题讨论】:

  • node.js - 我将其添加到问题中

标签: node.js mongodb


【解决方案1】:

是的。您可以批量查找、插入和删除操作。您可以使用bulk write operation 进行插入。听起来您有一个_id 或类似文档的列表,用于在主集合中查找文档。您应该使用$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()

您将被告知任何错误。插入成功后,从 main 中删除文档

> db.main.remove({ "_id" : { "$in" : [ **1-2K _id's** ] } })

【讨论】:

    猜你喜欢
    • 2015-01-18
    • 2021-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多