【问题标题】:Copy data field from one mongo collection to another, on db server在数据库服务器上将数据字段从一个 mongo 集合复制到另一个集合
【发布时间】:2016-01-07 21:26:26
【问题描述】:

我有两个 mongo 集合。一个我们可以称为模板,第二个是实例。每次创建新实例时,都会将相当大的数据字段从模板复制到实例。目前该字段是从应用程序中的 mongo db 模板集合中检索的,然后作为实例集合插入的一部分发送回 db。

是否有可能以某种方式直接在 mongo db 中插入时执行此复制,以避免通过网络来回发送几兆字节?

Kadira 报告因此延迟了 3 秒。文件只会变得更大。

我正在使用 Meteor,但我认为这不会对答案产生太大影响。

【问题讨论】:

    标签: mongodb meteor insert copy


    【解决方案1】:

    我已经进行了一些搜索,但我真的找不到适合您的优雅解决方案。我能想到的两种方法是:

    1.) 派生一个进程以运行 mongo 命令,通过 db.collection.copyTo() 将模板复制为新实例。

    http://eureka.ykyuen.info/2015/02/26/meteor-run-shell-command-at-server-side/ https://docs.mongodb.org/manual/reference/method/db.collection.copyTo/

    或者

    2.) 尝试访问原始 mongo 集合而不是流星提供的 minimongo 集合,以便您可以使用 Mongo 提供的 db.collection.copyTo() 功能。

    var rawCollection = Collection.rawCollection();
    rawCollection.copyTo(newCollection);
    

    Can meteor mongo driver handle $each and $position operators?

    我没有尝试访问 rawCollection 来查看 copyTo 是否可用,我也不知道它是否会在写出新集合之前将它带入流星。我只是把它扔在这里作为你的一个想法;希望别人有更好的。

    【讨论】:

    • 嗯。 CopyTo 可能值得研究。虽然它似乎复制了整个集合,而不是单个文档。
    • 你也可以试试批量操作:stackoverflow.com/questions/27039083/…
    • CopyTo 似乎在 rawCollection() 上不可用 - 至少从 Meteor 1.4.1 开始
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-07-03
    • 1970-01-01
    • 2016-08-24
    • 2012-07-18
    • 2020-07-17
    • 2019-03-21
    • 2015-09-14
    相关资源
    最近更新 更多