如何使用find修复“找不到文档”错误

时间:2019-08-05 16:38:18

标签: ruby mongodb mongoid

我有一个Person集合,存储在旧式mongodb服务器(2.4)中,并通过ruby mongodb驱动程序与mongoid gem一起访问。

如果我执行

    Person.where(email: 'some.existing.email@server.tld').first

我得到一个结果(假设我将ID存储在一个名为“ the_very_same_id_obtained_above”的变量中)

如果我执行

    Person.find(the_very_same_id_obtained_above)

我有一个

    Mongoid::Errors::DocumentNotFound

例外

如果我使用javascript语法执行查询,则会找到结果

   Person.where("this._id == #{the_very_same_id_obtained_above}").first # this works!

我目前正在尝试将数据迁移到新版本。目前在Amazon documentdb上进行mongodbrestore-ing进行测试(与mongodb 3.6兼容),问题仍然存在。

我注意到的一件事是那些对象id是奇特的:

5ce24b1169902e72c9739ff6仍然可以正常工作

59de48f53137ec054b000004这需要技巧

在id的末尾出现少量零似乎与问题高度相关(我不知道原因)。

1 个答案:

答案 0 :(得分:0)

这是默认设置:

 # Raise an error when performing a #find and the document is not found.
 # (default: true)
 raise_not_found_error: true

来源:https://docs.mongodb.com/mongoid/current/tutorials/mongoid-configuration/#anatomy-of-a-mongoid-config

如果这不能回答您的问题,则很可能find方法在您的代码中的某个地方被覆盖了!