我有一个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的末尾出现少量零似乎与问题高度相关(我不知道原因)。
答案 0 :(得分:0)
这是默认设置:
# Raise an error when performing a #find and the document is not found.
# (default: true)
raise_not_found_error: true
如果这不能回答您的问题,则很可能find
方法在您的代码中的某个地方被覆盖了!