我正在调试偶尔写入mongo集合似乎失败的问题。当我查看错误检查代码时,我发现Collection类中的update方法似乎返回了Fixnum而不是hash。
这是一个代码片段(带有调试语句)
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 update返回错误:Fixnum
[错误] Mongo update返回错误:236
我期望更新功能在成功操作时返回true,而Hash for根据文档失败:
返回: (Hash,true) - 如果确认写入,则返回包含最后一个错误对象的哈希。 >否则,返回true。
我正在使用版本1.8.0的ruby驱动程序。
我不确定如何正确检查写入是否正确发生。我知道如果写入失败,驱动程序应抛出异常,但我没有看到这种情况发生。我不知道如何正确检查状态变量,因为它没有返回我期望的类型。
提前感谢您的帮助。