MongoDB Mongoid 把内嵌文档的字段作为判断条件怎么写查询语句?

ginchenorlee · 2013年03月19日 · 最后由 ginchenorlee 回复于 2013年03月21日 · 2790 次阅读

我有数据库的数据结构(model : Record):

{
    "_id": {
        "$oid": "5141ae831229bc11b0000001"
    },
    "attend_date": "2013-03-14",
    "checkins": [
        {
            "_id": {
                "$oid": "5141ae831229bc11b0000002"
            },
            "check_unit_id": {
                "$oid": "5138ae3b1229bcc4d800000b"
            },
            "behave_id": {
                "$oid": "5138ae3b1229bcc4d8000001"
            }
        },
        {
            "_id": {
                "$oid": "5141ae831229bc11b0000003"
            },
            "check_unit_id": {
                "$oid": "5138ae3b1229bcc4d800000c"
            },
            "behave_id": {
                "$oid": "5138ae3b1229bcc4d8000001"
            }
        }
    ],
    "created_at": {
        "$date": "2013-03-14T11:03:31.819Z"
    },
    "record_person": "廖玥",
    "record_zone": "4028809b3c6fbaa7013c6fbc39900382",
    "staffid": "4028809b3c6fbaa7013c6fbc3da51b3d",
    "state": "checking",
    "updated_at": {
        "$date": "2013-03-14T11:03:31.819Z"
    }
}

我想通过类似查询语句: Record.where(state:"checking").where(checkins.behave_id: "...." ),形式 筛选出想要的 records, 我的这个查询语句该怎么写呢?求指教。

Record.where(state:"checking").where("checkins.behave_id": "...." )

引号

#1 楼 @Rei "checkins.behave_id" 这样的话,就把“checkins.behave_id" 整个当成一个字段名去了,不能识别是 内文档 checkins 的字段里啊,。所以还是查不出来

我这可以啊

User.where("profile.name" => /rei/i).first
=> #<User _id: 50c449……

mongoid 3.0.19

#3 楼 @Rei 恩,确实,但是,你注意没,如上面我给的那个文档结构,我的内嵌文档 checkins 是一个 Array [] 啊,所以还能这样直接 checkins.behave_id 啊? Record.where("checkins.behave_id" => "5138ae3b1229bcc4d8000001") #=> [] 怎么办呢?

需要 登录 后方可回复, 如果你还没有账号请 注册新账号