如何查找与嵌套键 laravel mongodb jenssegers 匹配的记录

Posted

技术标签:

【中文标题】如何查找与嵌套键 laravel mongodb jenssegers 匹配的记录【英文标题】:How to find record matching the nested key laravel mongodb jenssegers 【发布时间】:2018-04-08 19:43:35 【问题描述】:

我在 laravel 中使用 jenssegers mongodb 包来查询 mongodb。如何在下面的 json 文档中检索仅匹配比赛的记录作为板球。

      
       "_id": ObjectId("53402597d852426020000002"),
       "contact": "987654321",
       "dob": "01-01-1991",
       "gender": "M",
       "name": "Tom Benzamin",
       "user_name": “tombenzamin”,   
       “Personal_info”:[
            hobbies:
                "games": "cricket",
                "favfilms": "lotr",
                "favfood": "burger"
            
]
       

    

【问题讨论】:

你能分享你的关系配置(模型类)吗? 目前没有配置关系 【参考方案1】:

你可以使用whereRaw方法结合elemMatch

DB::collection('users')->where(
    'Personal_info.hobbies',
    'elemMatch',
    [ 'games' => 'cricket' ]
)->get()

【讨论】:

假设 Personal_info 是否有 json 数组。编辑了问题 @oldrock 我已经更新了答案,请检查【参考方案2】:
$crickets = DB::collection('games')->where('Personal_info.hobbies.games', 'cricket')->get();

这样的东西应该可以工作

【讨论】:

如果 Personal_info info 是一个像 Personal_info[] 这样的数组,那么我如何访问内部级别密钥 ...->where('Personal_info["hobbies"].games', 'cricket')->get(); 嘿,@Alfa 给出的答案是有效的。非常感谢您的帮助。

以上是关于如何查找与嵌套键 laravel mongodb jenssegers 匹配的记录的主要内容,如果未能解决你的问题,请参考以下文章

MongoDB通过***属性和嵌套数组键查找文档,并返回匹配文档的一部分

MongoDB:如何使用查找查询填充嵌套对象?

当嵌套字典键发生变化时,如何使用嵌套字典查询 mongodb 文档?

如何在 MongoDB 中推入具有精确键值的对象嵌套数组?

如何在嵌套字典中查找所有出现的键,同时跟踪外部字典键值?

在深层嵌套对象中按特定键查找所有值