如何绕过Mongoid的id别名,查询名为'id'的字段?
绕过Mongoid的
id→_id别名映射查询自定义id字段 当然可以,以下几种方法都能在不修改集合字段名的前提下解决这个问题:
使用字符串键替代符号键查询
Mongoid对符号形式的id会自动映射到_id,但使用字符串键时会直接当作集合中的字段名处理,不会触发别名转换:# 正确查询自定义id字段 YourModel.where("id" => "target-id-value")直接调用原生集合执行查询
绕过Mongoid的ORM层,直接使用底层MongoDB驱动的查询方法,完全避免别名映射逻辑:# 执行原生查询并返回结果数组 raw_results = YourModel.collection.find({ "id" => "target-id-value" }).to_a # 若需要转换成Mongoid模型对象 model_result = YourModel.instantiate(raw_results.first)在模型中显式声明自定义
id字段
在模型类里用field方法显式定义id字段,覆盖默认的别名映射规则,之后就能正常用符号键查询:class YourModel include Mongoid::Document # 根据你的实际字段类型调整,比如Integer、BSON::ObjectId等 field :id, type: String end # 之后直接用符号键查询即可 YourModel.where(id: "target-id-value")
内容的提问来源于stack exchange,提问作者Peter Ruan
相关产品推荐
相关产品推荐

