【问题标题】:How to find record matching the nested key laravel mongodb jenssegers如何查找与嵌套键 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"
            }
]
       }

    }

【问题讨论】:

  • 你能分享你的关系配置(模型类)吗?
  • 目前没有配置关系

标签: php mongodb laravel jenssegers-mongodb


【解决方案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 给出的答案是有效的。非常感谢您的帮助。
猜你喜欢
  • 2018-12-25
  • 1970-01-01
  • 2018-01-16
  • 2023-02-21
  • 2011-12-19
  • 2020-01-24
  • 1970-01-01
  • 2011-11-25
  • 2018-08-28
相关资源
最近更新 更多