rails mongoid查找文件
当我在Rails Console中执行时:
User.first
=> #<User _id: 6241f97de64d1eb2cc003d08,....
我会收到文档,但是当我尝试通过ID找到它时
。find('6241f97de64d1eb2cc003d08')或user.find(bson :: objectid('6241f97de64de64de64d1eb2cc003d08'')或 user.find('6241f97de64d1eb2cc003d08'.to_bson)等
我得到:
message:
Document(s) not found for class User with id(s) 6241f97de64d1eb2cc003d08.
为什么
3.0.3 :049 > User.where(_id: BSON::ObjectId('6241f97de64d1eb2cc003d08')).find
=> nil
它不起作用?
我使用Rails 7和Mongoid
When I do in rails console:
User.first
=> #<User _id: 6241f97de64d1eb2cc003d08,....
I get document, but when I try to find it by id like
User.find('6241f97de64d1eb2cc003d08') or User.find(BSON::ObjectId('6241f97de64d1eb2cc003d08')) or
User.find('6241f97de64d1eb2cc003d08'.to_bson) etc
I get:
message:
Document(s) not found for class User with id(s) 6241f97de64d1eb2cc003d08.
also
3.0.3 :049 > User.where(_id: BSON::ObjectId('6241f97de64d1eb2cc003d08')).find
=> nil
Why it does not work????
I use rails 7 and mongoid
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
终于找到了解决方案。
用户模型被这样定义:
并将其更改为此:
评论“字段:_id”可以做到这一点。我认为字符串类型是“覆盖”预期的objectid,因为_id和查找方法正在将字符串转换为ObjectID,因此我们最终以搜索字符串与objectID进行了搜索。
Finally found the solution.
User model was defined like this:
And changing it to this:
Commenting "field: _id" did the trick. I think string type was "covering" expected ObjectId as _id and find methods are converting strings into ObjectId so we ended up in search against string vs ObjectId.