PHP 怎么执行mongodb 的 $in 和$size查询

假设有个这样的集合

{ "_id" : ObjectId("5022518d09248743250688e0"), "name" : "big fruit", "fruits" : [ "apple", "pear", "orange" ] } , 
{ "_id" : ObjectId("502251a309248743250688e1"), "name" : "good fruit", "fruits" : [ "banana", "pear", "orange" ] }  ,
{ "_id" : ObjectId("502251c109248743250688e2"), "name" : "good fruit", "fruits" : [ "banana", "apple", "tomato" ] }  

假设有这样的集合

RT 者两句代码用PHP怎么写

db.coll.find({_id:{$in[ ObjectId("502251a309248743250688e1"), ObjectId("502251c109248743250688e2")]}})

查询长度为三的数组

db.coll.find({fruits:{$size:0}})

用PHP的话要怎么实现

阅读 6.5k
2 个回答

除了使用楼上推荐的jenssegers/mongodb,可以像使用MySQL一样用MongoDB ,但需要注意3.0版本以前不支持MongoDB扩展,也就是不支持PHP7.

使用原生的话,推荐文章升级PHP7操作MongoDB

public function query($where = [], $option = []) {
        $query = new \MongoDB\Driver\Query($where, $option);//http://php.net/manual/zh/mongodb-driver-manager.executequery.php
        $result = $this->manager->executeQuery('db.collection', $query);
        $res = [];
        foreach ($result as $value){
            $v = (array)$value;
            $v['_id'] = (string)$v['_id'];
            $res[] = $v;
        }
        return $res;
    }
   
   $res=$this->query(['_id'=>['$in'=>['502251a309248743250688e1','502251c109248743250688e2']]]); 

是原生php 还是用了其他ORM模型。可以用jenssegers/mongodb 组件composer安装下 还是比较好的

推荐问题
宣传栏