将Mongo查询转换为Laravel,嵌套的elemMatch

时间:2019-02-13 00:30:43

标签: php arrays mongodb laravel

我有一个可以在Mongo中正常运行的查询,例如:

db.nested.find({'path':{$elemMatch:{$elemMatch:{$in:[25]}}}})

这可以正确地获取我要在多维数组中查找的数据。

但是,我正在尝试使用laravel-mongodb(jenssegers)库将该查询转换为可在Laravel中使用,并且看来我不能在单个where()上使用多个elemMatch。

所以要做类似的事情:

DB::table('nested')->where('path','elemMatch', [25])->get();

因为它在阵列中的距离不够远,所以根本无法工作。

如何正确重写第一个查询以使其正常工作?

1 个答案:

答案 0 :(得分:1)

我发现最简单的解决方案是改用whereRaw

whereRaw(['path'=>['$elemMatch'=>['$elemMatch'=>['$in'=>[25]]]]])

这正常工作。