如何忽略mongodb的致命错误,防止它破坏我的长期解析任务

如何忽略mongodb的致命错误,防止它破坏我的长期解析任务,mongodb,mongoid,Mongodb,Mongoid,我正在导入数十亿条记录,将其插入mongoDB 运行大约10个小时后,我收到错误“客户端错误:剩余数据对于BSON对象来说太小” 然后这个错误破坏了我的任务 我尝试使用try exception跳过错误数据并继续 def bulk_insert_to_collection(collection_name) model = collection_name.capitalize.constantize.new begin model.collection.insert

我正在导入数十亿条记录,将其插入mongoDB

运行大约10个小时后,我收到错误“客户端错误:剩余数据对于BSON对象来说太小”

然后这个错误破坏了我的任务

我尝试使用
try exception
跳过错误数据并继续

  def bulk_insert_to_collection(collection_name)
    model = collection_name.capitalize.constantize.new
    begin
      model.collection.insert(@data_in_chunk)
    rescue Exception => e
      # ignore it
    end
  end
但它也不起作用。(异常仍然会中断解析任务)

所以我想知道如何让mongoDB不破坏我的脚本,即使发生了一些错误,只要忽略它并继续

  def bulk_insert_to_collection(collection_name)
    model = collection_name.capitalize.constantize.new
    begin
      model.collection.insert(@data_in_chunk)
    rescue Exception => e
      # ignore it
    end
  end

将批插入放在循环中,这样当一个批失败时,您就可以继续下一个批。无论如何,一次只能插入1000个,因为。这使您能够在不损失插入性能的情况下,以您想要的方式处理故障。

您是如何导入数据的,以及
不起作用的意思是什么?
您好@salvadodali,我更新了我的问题。谢谢你,因为我不熟悉mongoid,我会在这里问几个问题。您是否在客户端代码中使用?如果是,它是有序的还是无序的?还有,为什么不使用普通的mongorestore实用程序呢?嗨@SalvadorDali,因为我需要解析原始数据,并使用ruby对原始数据进行解码,然后将其转换为哈希/字典对象,稍后再进行批量插入。因为有数以十亿计的数据,所以可以一个接一个地高效插入愚蠢的问题/建议,但在保存之前检查是否有空数据?最近我遇到了这个错误,解决方法是在保存之前避免空集合(使用if!@data\u in_chunk.blank?),您没有回答这个问题。例外情况将打破常规。即使是try-catch也无法绕过异常。