You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何绕过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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 13:45:31