2

我正在调试一个偶尔写入 mongo 集合似乎失败的问题。当我检查错误检查代码时,我发现 Collection 类中的更新方法似乎返回的是 Fixnum 而不是哈希。

这是一个代码片段(带有调试语句)

  begin
    puts "collection type: #{@db_collection.class}"
    status = @db_collection.update(selector, document) 
    puts "[Warn] Database update returned NULL status" unless status

    puts "[Error] Mongo update returned an error: #{status.class}" unless (status == true)
    puts "[Error] Mongo update returned an error: #{status}" unless (status == true)
  rescue => e
    puts "[Warn] Unable to update mongoDB (#{e})"
  end

当我运行此代码时,我得到以下输出:

集合类型:Mongo::Collection

[错误] Mongo 更新返回错误:Fixnum

[错误] Mongo更新返回错误:236

根据文档,我期待更新函数返回成功操作的 true 和失败的哈希:

返回: (Hash, true) — 如果确认写入,则返回包含最后一个错误对象的 Hash。> 否则,返回真。

我正在使用 1.8.0 版的 ruby​​ 驱动程序。

我不确定如何正确检查写入是否正确。我知道如果写入失败,驱动程序应该抛出异常,但我没有看到这种情况发生。我不知道如何正确检查状态变量,因为它没有返回我期望的类型。

在此先感谢您的任何帮助。

4

0 回答 0