Laravel Mongodb或者不应该工作的地方

时间:2015-05-18 08:18:03

标签: mongodb laravel jenssegers-mongodb

我的查询是:

Collection::WhereIn('email',$email)->orWhereIn('mobile',$mobile)->get();

正在执行的Mongo查询是:

db.collection.find({"$and":[{"deleted_at":null},{"email":{"$in":["dfsdf@fsd.dfgf","sa$d.c"]}}],"$or":[{"mobile":{"$in":["39834787348","349430984390"]}}]},[])

没有得到正确的结果

实际上,下面的Mongo查询给出了正确的结果,但是如何在Laravel中执行。

db.collection.find({$or:[{"email":{$in:["dfsdf@fsd.dfgf","sa$d.c"]}},{"mobile":{$in:["9892230504"]}}]}).pretty()

我正在使用Laravels jeneggers / mongodb包。

1 个答案:

答案 0 :(得分:0)

考虑一下您可以尝试的文档 Advanced Wheres 中的示例:

DB::table('collection')
            ->whereIn('email', $email)
            ->orWhere(function($query)
            {
                $query->whereIn('mobile', $mobile);
            })
            ->get();

上面的查询将生成以下SQL:

select * from collection 
where email in ('dfsdf@fsd.dfgf', 'sa$d.c') 
      or ( mobile in ('39834787348', '349430984390'))