PHP操作MongoDB实现增删改查功能【附php7操作MongoDB方法】
发布时间:2021-05-23 10:43:15 所属栏目:编程 来源:网络整理
导读:本篇章节讲授PHP操纵MongoDB实现增编削查成果。供各人参考研究详细如下: MongoDB的PHP驱动提供了一些焦点类来操纵MongoDB,总的来说MongoDB呼吁行中有的成果,它都可以实现,并且参数的名目基内情似。PHP7早年的版本和PHP7之后的版本对MongoDB的
副问题[/!--empirenews.page--]
本篇章节讲授PHP操纵MongoDB实现增编削查成果。分享给各人供各人参考,详细如下: MongoDB的PHP驱动提供了一些焦点类来操纵MongoDB,总的来说MongoDB呼吁行中有的成果,它都可以实现,并且参数的名目基内情似。PHP7早年的版本和PHP7之后的版本对MongoDB的操纵有所差异,本文首要以PHP7早年版本为例讲授PHP对MongoDB的各类操纵,最后再简朴声名一下PHP7往后版本对MongoDB的操纵。 一、数据插入 mf;//选择数据库 $collection = $db->friend;//选择文档荟萃 $doc = [//界说一个文档,即一个数组 'First Name' => 'Jet','Last Name' => 'Wu','Age' => 26,'Phone' => '110','Address' => [ 'Country' => 'China','City' => 'Shen Zhen' ],'E-Mail' => [ '123456@qq.com','666666@sina.com','8888888@qq.com','77887788@qq.com' ] ]; $res = $collection->insert($doc);//向荟萃中插入一个文档 echo ''; print_r($res);//$res['ok']=1暗示插入乐成 二、数据查询 1. 查询单个文档: true,'fieldname2' => true)。_id字段总会返回,除非在第二个参数显式插手'_id'=>false。不配置则返回全部字段 $mongo = new MongoClient('mongodb://localhost:27017'); $db = $mongo->mf; $collection = $db->friend; $one = $collection->findOne(['First Name' => 'Jet']); echo ''; print_r($one);//返回一个数组,查不到数据则返回NULL 2. 查询多个文档: true,'fieldname2' => true)。_id字段总会返回,除非显式配置为false不返回。不配置则返回全部字段 $mongo = new MongoClient('mongodb://localhost:27017'); $db = $mongo->mf; $collection = $db->friend; $cursor = $collection->find(['Address.Country' => 'China']);//行使点操纵符查找数组元素 echo ''; while($doc = $cursor->getNext()) {//轮回读取每个匹配的文档 print_r($doc); } 行使各类前提操纵符界说查询: =、>、<>,用于整数字段查询 $mongo = new MongoClient('mongodb://localhost:27017'); $db = $mongo->mf; $collection = $db->friend; $cursor = $collection->find(['Age' => ['$gt' => 30]]); echo ''; while($doc = $cursor->getNext()) { print_r($doc); } //查询某个字段的全部不一再的值 $res = $collection->distinct('Age'); //$in:匹配多个值中恣意一个 $cursor = $collection->find(['Address.Country' => ['$in' => ['China','USA']]]); //$all:匹配多个值中全部值(用于数组字段查询) $cursor = $collection->find(['E-Mail' => ['$all' => ['123456@qq.com','77887788@qq.com']]]); //$or:或查询 $cursor = $collection->find(['$or' => [['First Name' => 'Jet'],['Address.Country' => 'USA']]]); //$slice:获取数组字段中指定命目标元素,位于find()函数第二个参数中 $cursor = $collection->find(['First Name' => 'Jet'],['E-Mail' => ['$slice' => 2]]);//只返回前两个email $cursor = $collection->find(['First Name' => 'Jet'],['E-Mail' => ['$slice' => -2]]);//只返回最后两个email $cursor = $collection->find(['First Name' => 'Jet'],['E-Mail' => ['$slice' => [1,2]]]);//忽略第一个,返回接下来两个 //$exists:按照某个字段是否有配置值举办查询 $cursor = $collection->find(['Hobby' => ['$exists' => false]]);//查找Hobby字段未配置值的文档 //正则表达式查询 $cursor = $collection->find(['First Name' => new MongoRegex('/^Je/i')]);//查找First Name字段以Je开头的文档,忽略巨细写差别 行使MongoCursor类提供的其他函数: sort(['Age' => 1]); //忽略前n个匹配的文档 $cursor->skip(1); //只返回前n个匹配的文档(limit()与skip()团结行使可实现数据分页成果) $cursor->limit(1); //匹配文档的总数 $cursor->count(); //指定查询索引 $cursor->hint(['Last Name' => -1]);//若索引不存在则会报错聚积查询:对数据举办分组统计 mf; $collection = $db->friend; $res = $collection->aggregate([ '$group' => [ '_id' => '$Address.Country',//分组字段,留意要加上“$”,这里是按照数组字段某个元素值举办分组 'total' => ['$sum' => 1],//求总和,暗示每匹配一个文档总和就加1 'maxAge' => ['$max' => '$Age'],//分组中Age字段最大值 'minAge' => ['$min' => '$Age']//分组中Age字段最小值 ] ]); echo ''; print_r($res);//返回一个数组,$ret['result']为数组,存放统计功效 //存在其余操纵的聚合查询:多个操纵之间执行先后次序取决于它们位置的先后次序 //聚合查询中的全部操纵,包罗'$group'在内,都是可选的。 $mongo = new MongoClient('mongodb://localhost:27017'); $db = $mongo->mf; $collection = $db->friend; $res = $collection->aggregate([ [//过滤前提:只对切合前提的原始文档举办聚合运算,如果放在'$group'之后则是只返回切合前提的功效文档 '$match' => ['Age' => ['$gt' => 30]] ],[//指定分组字段、统计字段 '$group' => [ '_id' => '$Address.Country','totalAge' => ['$sum' => '$Age']//计较各个分组Age字段总和 ] ],//以下操纵如果放在'$group'之前则在聚合前浸染于原始文档,若放在'$group'之后则在聚合后浸染于功效文档 ['$unwind' => '$E-Mail'],//将包括有某个数组范例字段的文档拆分成多个文档,每个文档的同名字段的值为数组中的一个值。 ['$project' => ['myAge' => '$Age','First Name' => '$First Name']],//指定返回字段,可以对字段举办重定名,名目:返回字段名 => $原本字段名 ['$skip' => 2],//跳过指定命量的文档 ['$limit' => 2],//只返回指定命量的文档 ['$sort' => ['totalAge' => 1]]//排序 ]); echo ''; print_r($res); |