【问题标题】:Mongo::Collection undefined method `insert'Mongo::Collection 未定义方法“插入”
【发布时间】:2016-02-26 22:08:01
【问题描述】:

我正在尝试将数百万行从另一个数据库导入 MongoDB。我的日常导入使用

MyModel.collection.insert(data_to_import)

我得到了

NoMethodError: undefined method `insert' for #<Mongo::Collection:0x000000082bb990>
/home/mika/projects/ca2/lib/tasks/data.rake:36:in `block (2 levels) in <top (required)>'
/home/mika/.rvm/gems/ruby-2.2.2/bin/ruby_executable_hooks:15:in `eval'
/home/mika/.rvm/gems/ruby-2.2.2/bin/ruby_executable_hooks:15:in `<main>'

模型定义为

class MyModel
  include Mongoid::Document
  include Mongoid::Attributes::Dynamic

end

有人对正在发生的事情有什么建议吗?

我可以一一保存行,但对于数百万行来说效率太低了。希望插入工作。

【问题讨论】:

    标签: mongoid


    【解决方案1】:

    如果您使用的是 mongoid5,请使用

    MyModel.collection.insert_many(data_to_import)
    

    如果 data_to_import 是一个数组或

    MyModel.collection.insert_one(data_to_import)
    

    如果 data_import 是单个文档

    如果您需要验证数据,也可以考虑使用 MyModel.create...

    【讨论】:

    • 谢谢。使用 insert_many 它正在添加新文档,但它们是一一添加的。至少每个插入都是单独记录的。但是,10k 个文档需要几秒钟才能导入,所以非常好。而且我不知道 MongoDB 是否有真正的批量插入。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-01
    • 2013-12-01
    • 2015-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多