PHP操作Mongodb

小编复习MongoDB,基础请参考:MongoDB-CSDN博客(主要是linux操作)

PHP操作


<?php
 /**
 * 注意 本类仅适用于PHP7.0版本以上   
 * 请注意:mongoDB 支持版本 3.2+
 * mongo具体参数参考: https://docs.mongodb.com/manual/reference/command/
 */
class MyMongodb {
    private $manager;
    private $dbname='yun';
    /**
     * 创建实例
     * @param  string $confkey
     * @return object
     */
    public function __construct($dns){
        $this->manager = new MongoDB\Driver\Manager($dns);
    }
    /**
     * 插入
     */
    public function insert($table,$data){
        $bulk = new MongoDB\Driver\BulkWrite;
        $bulk->insert($data);
        $writeConcern = new MongoDB\Driver\WriteConcern(MongoDB\Driver\WriteConcern::MAJORITY, 1000);
        $res = $this->manager->executeBulkWrite($this->dbname.'.'.$table, $bulk, $writeConcern);
        return $res?true:false;
    }
    public function insert_batch($table,$data)
    {
        $bulk = new MongoDB\Driver\BulkWrite;
        foreach ($data as $val){
            $bulk->insert($val);
        }
        $writeConcern = new MongoDB\Driver\WriteConcern(MongoDB\Driver\WriteConcern::MAJORITY, 1000);
        $res = $this->manager->executeBulkWrite($this->dbname.'.'.$table, $bulk, $writeConcern);
        return $res?true:false;
    }
    /**
     * 查询
     * eg:['age' => 24]]
     * eg;$options = [
     *      'projection' => ['_id' => 0], //不输出_id字段
     *      'sort' => ['leavetime'=>-1] //根据user_id字段排序 1是升序,-1是降序
     *   ];
     */
    public function select($table,$filter,$options=array()){
        !$filter && dieError('param of filter is error');
        $options['projection']=['_id' => 0];
        $query = new MongoDB\Driver\Query($filter, $options); //查询请求
        $cursor = $this->manager->executeQuery($this->dbname.'.'.$table, $query);
        $result = [];
        foreach($cursor as $doc) {
          $result[] = (array)$doc;
        }
        return $result;
    }
    /**
     * 修改
     * eg:$condition=['name' => 'JetWu5']
     * eg:$set_array= ['$set' => ['age' => 30, 'promise' => 'always smile!']]
     */
    public function update($table,$condition=array(),$set_array=array()){
        !$condition && dieError('param of condition is error');
        !$set_array && dieError('param of set_array is error');
        $bulk = new MongoDB\Driver\BulkWrite;
        $bulk->update(
          $condition,
          $set_array
        );
        $writeConcern = new MongoDB\Driver\WriteConcern(MongoDB\Driver\WriteConcern::MAJORITY, 1000);//可选,修改确认
        $res = $this->manager->executeBulkWrite($this->dbname.'.'.$table, $bulk, $writeConcern);
        return $res?true:false;
    }
    /**
     * 删除
     * eg:$condition=['name' => 'JetWu5']
     * if $condition==[] then delete all table documents!
     */
    public function delete($table,$condition=[]){
        !is_array($condition) && dieError('param of condition is error');
        $bulk = new MongoDB\Driver\BulkWrite;
        $bulk->delete($condition);
        $writeConcern = new MongoDB\Driver\WriteConcern(MongoDB\Driver\WriteConcern::MAJORITY, 1000);//可选,修改确认
        $res = $this->manager->executeBulkWrite($this->dbname.'.'.$table, $bulk, $writeConcern);
        return $res?true:false;
    }
    function exec($opts) {
        $cmd = new MongoDB\Driver\Command($opts);
        $cursor =  $this->manager->executeCommand($this->dbname, $cmd);
        $result = [];
        foreach($cursor as $doc) {
          $result[] = (array)$doc;
        }
        return $result;
    }
}

关键字


$eq:等于
$gt:大于
$gte:大于等于
$lt:小于
$lte:小于等于
$ne:不等于
$in:在指定数组中
$nin:不在指定数组中
$and:逻辑与
$or:逻辑或
$not:逻辑非
$exists:字段是否存在

//数据库链接
$mongodb = new MongoDB\Driver\Manager('mongodb://localhost:27017');
//数据写入
$bulk = new MongoDB\Driver\BulkWrite;
$bulk->insert(['x' => 1, 'name'=>'测试数据1', 'type' => 1,'desc'=>'描述1']);
$bulk->insert(['x' => 2, 'name'=>'测试数据2', 'type' => 2,'desc'=>'描述2']);
$bulk->insert(['x' => 3, 'name'=>'测试数据3', 'type' => 1,'desc'=>'描述3']);
$bulk->insert(['x' => 4, 'name'=>'测试数据4', 'type' => 2,'desc'=>'描述4']);
$bulk->insert(['x' => 5, 'name'=>'测试数据5', 'type' => 1,'desc'=>'描述5']);
$bulk->insert(['x' => 6, 'name'=>'测试数据6', 'type' => 2,'desc'=>'描述6']);
$mongodb->executeBulkWrite('message.test', $bulk);//数据写入(写入meaasge库的test表)

//数据查询
$filter = ['x' => ['$lte' => 3]];
$options = [
    'projection' => ['_id' => 0],
    'sort' => ['x' => 1],
];
$query = new MongoDB\Driver\Query($filter, $options); // 查询数据(预处理语句)
$cursor = $mongodb->executeQuery('message.test', $query);//执行查询
foreach ($cursor as $document) {//数据循环输出
    print_r($document);
}

//数据修改
$bulk = new MongoDB\Driver\BulkWrite;
$bulk->update(
    ['x' => 2],
    ['$set' => ['name' => '测试数据22', 'desc' => '描述22']],
    ['multi' => false, 'upsert' => false]
);
$writeConcern = new MongoDB\Driver\WriteConcern(MongoDB\Driver\WriteConcern::MAJORITY, 1000);
$result = $mongodb->executeBulkWrite('message.test', $bulk, $writeConcern);
var_dump($result);

//数据删除
$bulk = new MongoDB\Driver\BulkWrite;
$bulk->delete(['x' => 1], ['limit' => 1]);   // limit 为 1 时,删除第一条匹配数据,limit 为 0 时,删除所有匹配数据
$writeConcern = new MongoDB\Driver\WriteConcern(MongoDB\Driver\WriteConcern::MAJORITY, 1000);
$result = $mongodb->executeBulkWrite('message.test', $bulk, $writeConcern);
var_dump($result);
die;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/599779.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

做安卓应用开发的我,转前端开发了

距离转前端开发已经快3个月了&#xff0c;现在自己也慢慢的熟悉了开发。 在2月份的时候。领导找我们移动小组的谈话&#xff0c;主要是关于转前端或者后端的问题。由于公司移动端的选型&#xff0c;对安卓原生的需求降低&#xff0c;问下我们转其他开发的需求。 我毫不犹豫的选…

一文了解栈

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、栈是什么&#xff1f;二、栈的实现思路1.顺序表实现2.单链表实现3.双向链表实现 三、接口函数的实现1.栈的定义2.栈的初始化3.栈的销毁4.入栈5.出栈6.返回栈…

MFC列表控件用ADO添加数据实例

1、本程序基于前期我的博客文章《MFC用ADO连接ACESS数据库实例(免费源码下载)》 程序功能通过编辑框、组合框实时将数据写入ACESS数据库并在列表控件上显示。 2、在主界面资源视图上加上一个按钮控件、两个静态文本、一个编辑框IDC_EDIT1变量名name、一个组合框IDC_COMBO1变量名…

【从零开始学习Minio | 第一篇】快速介绍什么是Minio

前言&#xff1a; 在当今数字化时代&#xff0c;数据的存储和管理已经成为了企业发展中的关键一环。随着数据量的不断增长和数据安全性的日益受到重视&#xff0c;传统的数据存储解决方案往往面临着诸多挑战。为了应对这些挑战&#xff0c;云存储技术应运而生&#xff0c;并在…

VMware下Ubuntu的安装教程

文章目录 一、Ubuntu如何下载1.下载官方地址https://ubuntu.com/2.点选Ubuntu服务器版本3.点击下载Ubuntu服务器版本iso镜像二、VMware安装Ubuntu服务器系统1.创建虚拟机2.选择下载好的Ubuntu服务器镜像3.创建安装完成三、Ubuntu Server如何设置1.Ubuntu Server没有中文所以全都…

Skywalking数据持久化与自定义链路追踪

学习本篇文章之前首先要了解一下Sky walking的基础知识 分布式链路追踪工具Skywalking详解 一&#xff0c;Sky walking数据持久化 Sky walking提供了es&#xff0c;MySQL等数据持久化方案&#xff0c;默认使用h2基于内存的数据库&#xff0c;重启之后数据即会丢失。 在实际工…

asp.net成绩查询系统

说明文档 运行前附加数据库.mdf&#xff08;或sql生成数据库&#xff09; 主要技术&#xff1a; 基于asp.net架构和sql server数据库 功能模块&#xff1a; asp.net成绩查询系统 学生功能有查看成绩和修改账号密码等 后台管理员可以进行用户管理 管理员添加管理员查询注…

element-plus el-time-picker 时间段选择(可多选)

实现一个如图的时间段选择器 处理好时间回显逻辑&#xff0c;组件内[‘’,‘’],后端数据[{startTime:‘’,endTime:‘’}]处理好加和减的显示逻辑 <template><div><div v-for"(item, index) in currentChoose" :key"index" class"fl…

[Java EE] 多线程(九):ReentrantLock,Semaphore,CountDownLatch与线程安全的集合类(多线程完结)

&#x1f338;个人主页:https://blog.csdn.net/2301_80050796?spm1000.2115.3001.5343 &#x1f3f5;️热门专栏:&#x1f355; Collection与数据结构 (91平均质量分)https://blog.csdn.net/2301_80050796/category_12621348.html?spm1001.2014.3001.5482 &#x1f9c0;Java …

C++之类与对象

1、类声明 2、共有、私有、保护成员。&#xff08;就比如说你一个变量是private的&#xff0c;然后在main函数中&#xff0c;就调用不了&#xff0c;只能在这个类.cpp中调用&#xff09; 3、数据抽象和封装 4、内联函数 内存体积会增大&#xff0c;以空间换时间&#xff1a;编…

php使用服务器端和客户端加密狗环境部署及使用记录(服务器端windows环境下部署、linux环境宝塔面板部署、客户端部署加密狗)

php使用服务器端和客户端加密狗环境部署及使用记录 ViKey加密狗环境部署1.windows环境下部署开发文档验证代码提示Fatal error: Class COM not found in 2.linux环境下部署&#xff08;宝塔面板&#xff09;开发文档验证代码提示Fatal error: Uncaught Error: Call to undefine…

【软测学习笔记】Python入门Day02

&#x1f31f;博主主页&#xff1a;我是一只海绵派大星 &#x1f4da;专栏分类&#xff1a;软件测试笔记 &#x1f4da;参考教程&#xff1a;黑马教程❤️感谢大家点赞&#x1f44d;收藏⭐评论✍️ python安装 1、进入Python的官方下载页面&#xff1a; Download Python | Py…

Java+SpringBoot+JSP实现在线心理评测与咨询系统

前言介绍 随着互联网技术的高速发展&#xff0c;人们生活的各方面都受到互联网技术的影响。现在人们可以通过互联网技术就能实现不出家门就可以通过网络进行系统管理&#xff0c;交易等&#xff0c;而且过程简单、快捷。同样的&#xff0c;在人们的工作生活中&#xff0c;也就…

用PowerPoint创建毛笔字书写动画

先看看下面这个毛笔字书写动画&#xff1a; 这个动画是用PowerPoint创建的。下面介绍创建过程。 1、在任何一款矢量图片编辑软件中创建一个图片&#xff0c;用文字工具输入文字内容。我用的是InkScape。排好版后将图片保存为.svg格式的矢量图片文件。 2、打开PowerPoint&…

RTT潘多拉开发板上实现电源管理

简介 随着物联网(IoT)的兴起&#xff0c;产品对功耗的需求越来越强烈。作为数据采集的传感器节点通常需要在电池供电时长期工作&#xff0c;而作为联网的SOC也需要有快速的响应功能和较低的功耗。 在产品开发的起始阶段&#xff0c;首先考虑是尽快完成产品的功能开发。在产品…

C++变量的作用域与存储类型

一 变量的作用域和存储类型 1 变量的作用域(Scope) 指在源程序中定义变量的位置及其能被读写访问的范围分为局部变量(Local Variable)和全局变量(Global Variable) 1&#xff09;局部变量(Local Variable) 在语句块内定义的变量 形参也是局部变量 特点&#xff1a; 生存期是…

web 基础之 HTTP 请求

web 基础 网上冲浪 就是在互联网(internet)上获取各种信息&#xff0c;进行工作&#xff0c;或者娱乐&#xff0c;他的英文表示surfing the Internet&#xff0c;因 “surfing”d的意思是冲浪&#xff0c;即成为网上冲浪&#xff0c;这是一种形象说法&#xff0c; 也是一个非…

交易复盘-20240507

仅用于记录当天的市场情况&#xff0c;用于统计交易策略的适用情况&#xff0c;以便程序回测 短线核心&#xff1a;不参与任何级别的调整&#xff0c;采用龙空龙模式 一支股票 10%的时候可以操作&#xff0c; 90%的时间适合空仓等待 蔚蓝生物 (5)|[9:25]|[36187万]|4.86 百合花…

SpringBootWeb入门

SpringBoot可以帮助我们快速的构建应用程序、简化开发、提高效率 创建SpringBoot工程&#xff0c;并勾选web开发相关依赖 定义HelloController类&#xff0c;添加方法&#xff0c;并添加注解 运行测试 创建SpringBoot工程(联网下载) 在File里面点击new Module 点击next 修…

Linux\_c输出

第一条Linux_c输出 初界面 : ls # 显示目录下的文件cd # 进入到某个目录 # 比如 我进入了Codels # 发现没有显示, 说明为文件下为空vim cpucdoe.c # 创建一个 .c的源码文件进入到了vim的编辑界面: i # 按i 就可以进行编辑 , 下面显示插入标识在编辑模式下, 可以通…
最新文章