IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> PHP7以上版本操作mongodb -> 正文阅读

[大数据]PHP7以上版本操作mongodb

链接mongo

$config = array(
    'username' => 'admin',
    'password' => '123456'
);
// 连接
$manager = new \MongoDB\Driver\Manager('mongodb://127.0.0.1:27017',$config);

 //MongoDB\Driver\WriteConcern::MAJORITY:抛出网络错误异常、服务器错误异常;并等待一个主服务器完成写操作
 //1000 表示等待时间
$writeConcern = new \MongoDB\Driver\WriteConcern(\MongoDB\Driver\WriteConcern::MAJORITY, 1000);
$bulk = new \MongoDB\Driver\BulkWrite();

插入数据

$bulk->insert(['_id' => 1, 'name'=>'张三', 'age' => '12']);
$bulk->insert(['_id' => 2, 'name'=>'李四', 'age' => '16']);
$bulk->insert(['_id' => 3, 'name'=>'王五', 'age' => '18']);
$bulk->insert(['_id' => 4, 'name'=>'张三-01', 'age' => '22']);
$bulk->insert(['_id' => 5, 'name'=>'李四-02', 'age' => '23']);
$bulk->insert(['_id' => 6, 'name'=>'王五-04', 'age' => '32']);
$result = $manager->executeBulkWrite('test.user', $bulk, $writeConcern); //test.sites 表示 test库里面的 user集合

获取数据

$filter = ['_id'=>['$gt'=>2]];//查询_id大于2的记录
$filter = ['_id'=>['$gt'=>2,'$lt'=>6]];//查询_id大于2,小于6 的记录
$filter = ['name'=>['$regex'=>'^李']];//查询name字段以 李 开头的记录
$filter = ['name'=>['$regex'=>'李']];//查询name字段包含 李 的记录
$filter = ['age'=>['$in'=>["16","12"]]];//查询age字段 在 [16,12]的记录
$filter = ['age'=>['$nin'=>["16","12"]]];//查询age字段 不在 [16,12]的记录
$options = [
     'skip'=>0,//根据条件从第一条数据开始   类似于 mysql 的 sffset 和 limit 可用于分页
     'limit'=>5,//根据条件获取5条数据
     'sort' => ['_id' => -1],//按照_id 倒序
     'projection'=>['age'=>false],//不查询age字段
];
$query = new \MongoDB\Driver\Query($filter,$options);
$list = $manager->executeQuery('test.user', $query)->toArray();//执行query,并将结果转为数组
print_r($list);

根据条件获取某个集合数据条数

$filter = []; //过滤条件
$command = new \MongoDB\Driver\Command(["count"=>"user","query"=>$filter]);//user 表示 集合名称
$count = $manager->executeCommand('test',$command)->toArray()[0]->n; //test表示数据库名称
var_dump($count);

更新数据

$filter = ['_id'=>2];//更新_id=2的数据
$newObj = ['$set'=>['age'=>'16']]; //age:更新的字段,也可以是一个不存在的字段,即新增一个字段
$updateOptions = ['multi' => false, 'upsert' => false];//multi:是否更新所有,upsert:当查询不到指定数据时,是否插入一条新数据
$bulk->update($filter, $newObj, $updateOptions);
$result = $manager->executeBulkWrite('test.user', $bulk, $writeConcern);
var_dump($result);

删除某个文档的某个属性

$filter = ['_id'=>2];//条件
$newObj = ['$unset'=>['age'=>1]]; //age:需要删除的字段
$updateOptions = ['multi' => false, 'upsert' => false];//multi:是否更新所有,upsert:当查询不到指定数据时,是否插入一条新数据
$bulk->update($filter, $newObj, $updateOptions);
$result = $manager->executeBulkWrite('test.user', $bulk, $writeConcern);
var_dump($result);

删除记录

$filter = ['age'=>'12']; //删除条件 为空标识删除所有
$deleteOptions = ['limit'=>0]; //limit 为1 表示删除一条数据,为0 表示删除所有
$bulk->delete($filter, $deleteOptions);
$result = $manager->executeBulkWrite('test.user', $bulk, $writeConcern);
 var_dump($result);

自增

$filter = ['_id' => 2];//条件
$newObj = ['$inc' => ['age' => 2]];//注意,自增时,age字段必须是int 类型,不能是数值型字符串
$updateOptions = ['multi' => false, 'upsert' => false];//multi:是否更新多条数据,upsert:当查询不到指定数据时,是否插入一条新数据
$bulk->update($filter, $newObj, $updateOptions);
$result = $manager->executeBulkWrite('test.user', $bulk, $writeConcern);
var_dump($result);

自减

$filter = ['_id' => 2];//条件
$newObj = ['$inc' => ['age' => -5]];
$updateOptions = ['multi' => false, 'upsert' => false];
$bulk->update($filter, $newObj, $updateOptions);
$result = $manager->executeBulkWrite('test.user', $bulk, $writeConcern);
var_dump($result);
  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-11-24 08:01:04  更:2021-11-24 08:03:14 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 8:52:11-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码