您当前的位置 :首页 > 学习资料 > php7的mongodb基本用法
投稿

php7的mongodb基本用法

2021-03-21 21:37:21 来源: 作者: 责任编辑:cncml

提示:PHP的mongodb扩展,从5.6开始已经废弃了原来的mongo扩展,php7的pecl下载地址:https://pecl.php.net/package/mongodb,或者选择mongodb官方开发:https://github.com/mongodb/mongo-php-library,git上的这个支持以前mongo写法,pecl上的mongodb不支持以前的写法。

下面用PHP7新的API总结一下:

一:CURD

1:链接
 
  1. <?php
  2. //链接mongodb
  3. $manager = new MongoDB\\Driver\\Manager('mongodb://root:123@10.10.10.104:27017');
  4. root 用户;123:密码;如果没有密码则不写
复制代码


2:查询
 
  1. <?php
  2.  
  3. //链接mongodb
  4. $manager = new MongoDB\\Driver\\Manager('mongodb://root:sjhc168@10.10.10.104:27017');
  5.  
  6. //查询
  7. $filter =  ['user_id'=>['$gt'=>0]]; //查询条件 user_id大于0
  8. $options = [
  9.    'projection' => ['_id' => 0], //不输出_id字段
  10.    'sort' => ['user_id'=>-1] //根据user_id字段排序 1是升序,-1是降序
  11. ];
  12. $query = new MongoDB\\Driver\\Query($filter, $options); //查询请求
  13. $list = $manager->executeQuery('location.box',$query); // 执行查询 location数据库下的box集合
  14.  
  15.  
  16. foreach ($list as $document) {
  17.     print_r($document);
  18. }
复制代码

查询更多条件使用方法,参考第二节mongodb基本命令,查询

3:添加
 
  1. <?php
  2.  
  3. //链接mongodb
  4. $manager = new MongoDB\\Driver\\Manager('mongodb://root:sjhc168@10.10.10.104:27017');
  5.  
  6. $bulk = new MongoDB\\Driver\\BulkWrite; //默认是有序的,串行执行
  7. //$bulk = new MongoDB\\Driver\\BulkWrite(['ordered' => flase]);//如果要改成无序操作则加flase,并行执行
  8. $bulk->insert(['user_id' => 2, 'real_name'=>'中国',]);
  9. $bulk->insert(['user_id' => 3, 'real_name'=>'中国人',]);
  10. $manager->executeBulkWrite('location.box', $bulk); //执行写入 location数据库下的box集合
复制代码

4:修改
 
  1. <?php
  2.  
  3. //链接mongodb
  4. $manager = new MongoDB\\Driver\\Manager('mongodb://root:sjhc168@10.10.10.104:27017');
  5.  
  6. $bulk = new MongoDB\\Driver\\BulkWrite; //默认是有序的,串行执行
  7. //$bulk = new MongoDB\\Driver\\BulkWrite(['ordered' => flase]);//如果要改成无序操作则加flase,并行执行
  8. $bulk->update(
  9.         ['user_id' => 2],
  10.         ['$set'=>['real_name'=>'中国国']
  11. ]);
  12. //$set相当于mysql的 set,这里和mysql有两个不同的地方,
  13. //1:字段不存在会添加一个字段;
  14. //2:mongodb默认如果条件不成立,新增加数据,相当于insert
  15.  
  16.  
  17. //如果条件不存在不新增加,可以通过设置upsert
  18. //db.collectionName.update(query, obj, upsert, multi);
  19.  
  20. $bulk->update(
  21.         ['user_id' => 5],
  22.         [
  23.                 '$set'=>['fff'=>'中国国']
  24.         ],
  25.         ['multi' => true, 'upsert' => false]
  26.         //multi为true,则满足条件的全部修改,默认为true,如果改为false,则只修改满足条件的第一条
  27.         //upsert为 treu:表示不存在就新增
  28. );
  29. $manager->executeBulkWrite('location.box', $bulk); //执行写入 location数据库下的box集合
复制代码


ordered 设置

1:默认是ture,按照顺序执行插入更新数据,如果出错,停止执行后面的,mongo官方叫串行。
2:如果是false,mongo并发的方式插入更新数据,中间出现错误,不影响后续操作无影响,mongo官方叫并行

5:删除
 
  1. <?php
  2.  
  3. //链接mongodb
  4. $manager = new MongoDB\\Driver\\Manager('mongodb://root:sjhc168@10.10.10.104:27017');
  5.  
  6. $bulk = new MongoDB\\Driver\\BulkWrite; //默认是有序的,串行执行
  7. //$bulk = new MongoDB\\Driver\\BulkWrite(['ordered' => flase]);//如果要改成无序操作则加flase,并行执行
  8. $bulk->delete(['user_id'=>5]);//删除user_id为5的字段
  9. $manager->executeBulkWrite('location.box', $bulk); //执行写入 location数据库下的box集合
  10. delete还可以通过limit设置不同删除方式
  11.  
  12. $bulk->delete(['user_id' => 1], ['limit' => 1]);   // limit 为 1 时,删除第一条匹配数据
  13. $bulk->delete(['user_id' => 2], ['limit' => 0]);   // limit 为 0 时,删除所有匹配数据,默认删除所有
复制代码


6:捕获异常
 
  1. MongoDB\\Driver\\Exception\\AuthenticationException
  2. MongoDB\\Driver\\Exception\\BulkWriteException
  3. MongoDB\\Driver\\Exception\\ConnectionException
  4. MongoDB\\Driver\\Exception\\ConnectionTimeoutException
  5. MongoDB\\Driver\\Exception\\Exception //所有驱动程序异常的公共接口
  6. MongoDB\\Driver\\Exception\\ExecutionTimeoutException
  7. MongoDB\\Driver\\Exception\\InvalidArgumentException
  8. MongoDB\\Driver\\Exception\\LogicException
  9. MongoDB\\Driver\\Exception\\RuntimeException
  10. MongoDB\\Driver\\Exception\\SSLConnectionException
  11. MongoDB\\Driver\\Exception\\UnexpectedValueException
  12. MongoDB\\Driver\\Exception\\WriteException
复制代码



 
文章来源: 责任编辑:cncml
版权声明:
1、本主题所有言论和图片纯属会员个人意见,与本网站立场无关
2、本站所有主题由该文章作者发表,该文章作者与享有文章相关版权
3、其他单位或个人使用、转载或引用本文时必须同时征得该文章作者和的同意
4、文章作者须承担一切因本文发表而直接或间接导致的民事或刑事法律责任
5、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责
6、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
7、管理员和版主有权不事先通知发贴者而删除本文
不良信息举报信箱 新闻热线:18733599993 技术服务:18733599993 网上投稿
关于本站 | 广告服务 | 免责申明 | 招聘信息 | 联系我们
在线网 版权所有 Copyright(C)2005-2025