【问题标题】:Mongoid failing to find document by nested IDMongoid 无法通过嵌套 ID 查找文档
【发布时间】:2013-08-28 18:08:44
【问题描述】:

我有一个文档集,看起来像这样:

{
    _id: ObjectId("521d11014903728f8d000006"),
    association_chain: [
        {
            name: "Foobar",
            id: ObjectId("521d11014903728f8d000005")
        }
    ],
    // etc...
}

我可以使用此查询按name 属性进行搜索:

@results = Model.where 'association_chain.name' => 'Foobar'

这会按预期返回结果。但是,当我尝试使用 id 属性进行搜索时:

@results = Model.where 'association_chain.id' => '521d11014903728f8d000005'

没有结果。据我所知,Mongoid 生成的查询看起来是正确的:

MOPED: 127.0.0.1:27017 QUERY  database=x collection=x selector={"$query"=>{"association_chain.id"=>"521d11014903728f8d000005"}, "$orderby"=>{"created_at"=>-1}} flags=[] limit=25 skip=0 batch_size=nil fields=nil (244.7259ms)

我做错了什么?

【问题讨论】:

    标签: ruby mongoid mongoid3


    【解决方案1】:

    您正在搜索字符串。尝试搜索 ObjectId,例如

    @results = Model.where 'association_chain.id' => BSON::ObjectId('521d11014903728f8d000005')
    

    【讨论】:

    • ObjectId 不是方法
    • ...但将其更改为 BSON::ObjectId() 解决了问题。我会更新你的答案。谢谢!
    • 感谢您修复我的答案!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-14
    • 1970-01-01
    • 1970-01-01
    • 2021-07-21
    • 1970-01-01
    相关资源
    最近更新 更多