当前位置:  开发笔记 > 编程语言 > 正文

使用Mongoid批量插入/更新?

如何解决《使用Mongoid批量插入/更新?》经验,为你挑选了3个好方法。

我用谷歌搜索了所有其他人,但我找不到答案.问题是:

嗨,我怎么能用Mongoid批量插入到MongoDB?



1> tommy chheng..:

您可以使用ruby mongo驱动程序的insert方法插入一批哈希值.从任何Mongoid类,您可以调用集合来访问它.

batch = [{:name => "mongodb"}, {:name => "mongoid"}]  
Article.collection.insert(batch)


要记住的一个非常重要的一点是,通过这样做,你绕过了mongoid.yml选项.因此,如果您使用它,请确保在需要时通知他们,例如:Article.with(safe:true).collection.insert(batch)
@HarisKrajina - 在mongoid的更新版本中,您需要使用'insert_many'方法.希望这可以帮助,

2> Damir Bulic..:

如果要批量插入Mongoid文档(模型)而不是哈希,请在将模型放入数组之前调用模型的as_document方法:

@page_views << page_view.as_document

...

PageView.collection.insert(@page_views)


跳过验证
@Jay`mongoid`或`mongodb`解决了一个对象已经存在并执行更新的事实吗?还是有必要过滤掉那些?

3> liukgg..:

您可以使用此:

books = [{:name => "Harry Potter"}, {:name => "Night"}]  
Book.collection.insert_many(books)

而且我发现“插入”对我不起作用(Monogoid 5.1.3):

NoMethodError: undefined method `insert' for # 
Did you mean?  insert_one
               insert_many
               inspect

这是来自“ lib / mongo / collection.rb”的源代码:

# Insert the provided documents into the collection.
#
# @example Insert documents into the collection.
#   collection.insert_many([{ name: 'test' }])
#
# @param [ Array ] documents The documents to insert.
# @param [ Hash ] options The insert options.
#
# @return [ Result ] The database response wrapper.
#
# @since 2.0.0
def insert_many(documents, options = {})
  inserts = documents.map{ |doc| { :insert_one => doc }}
  bulk_write(inserts, options)
end

推荐阅读
爱唱歌的郭少文_
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有