PHP使用MongoDB类操作MongoDB数据库总结
参考:https://www.php.net/manual/zh/class.mongodb-driver-manager.php
参考:https://www.zhaokeli.com/article/8574.html
Driver\Manager 入口文件,一般都要先实例化该类
Driver\BulkWrite 读写类,数据库的增、删、改都要先靠该类来实现
Driver\Query 查询类,MongoDB支持丰富的查询方式,所以单独拿出来组建了一个类
Driver\Cursor 返回结果类,其实就是一个Cursor类的一个对象,该类有内置的toArray()函数可以结果转换成数组形式的
BSON\ObjectID MongoDB默认创建的索引是_id,在添加的时候可以指定_id,给类就是可以创建一个指定内容的_id
我使用上述类简单操作MongoDB的时运行的顺序是:
实例化Manager类
要进行增删改操作时,实例化BulkWrite类,并根据需要的操作执行该类中的insert、delete、update方法,要进行查询时,实例化Query类
接着根据2中的操作,选择运行Manager类的executeQuery或者executeBulkWrite两个操作中的一个,返回结果类型是Cursor类,运行Cursor类的toArray方法,就能将结果从对象转换成数组,虽然其中还是会包含对象,但是比起单纯处理对象无疑是方便多了的。
这里贴一个基础操作类,把上面的过程进行了整合:
- class MongoDBOperate
- {
- private $config = array(
- 'host' => '127.0.0.1',
- 'port' => '',
- 'user' => '',
- 'passwords' => '',
- 'db' => 'test'
- );
- // MongoDB\Driver入口类
- private $Manage;
- function __construct()
- {
- try {
- $this->Manage = new MongoDB\Driver\Manager("mongodb://" . $this->config['host'] . "/" . $this->config['port']);
- } catch (Exception $exception) {
- echo $exception->getMessage();
- }
- }
- /**
- * @param $collection
- * @param $data
- * @return array
- * 新增数据
- */
- public function insert($collection, $data)
- {
- // 返回结果_id
- $_ids = array();
- $BulkWrite = new MongoDB\Driver\BulkWrite();
- if (is_array(current($data))) {
- foreach ($data as $key => $datum) {
- $_id = new MongoDB\BSON\ObjectID();
- $datum['_id'] = $_id;
- $BulkWrite->insert($datum);
- $_ids[] = $_id->oid;
- }
- } else {
- $_id = new MongoDB\BSON\ObjectID();
- $data['_id'] = $_id;
- $BulkWrite->insert($data);
- $_ids = $_id->oid;
- }
- $this->Manage->executeBulkWrite($this->config['db'] . "." . $collection, $BulkWrite);
- return $_ids;
- }
- /**
- * @param $collection
- * @param $filter
- * 删除数据
- */
- public function delete($collection,$filter){
- $BulkWrite=new MongoDB\Driver\BulkWrite();
- if(is_array(current($filter))){
- foreach ($filter as $key=>$value){
- $BulkWrite->delete($value);
- }
- }else{
- $BulkWrite->delete($filter);
- }
- $this->Manage->executeBulkWrite($this->config['db'].".".$collection,$BulkWrite);
- }
- /**
- * @param $collection
- * @param $filter
- * @param $data
- * 更新数据
- */
- public function update($collection,$filter,$data){
- $BulkWrite=new MongoDB\Driver\BulkWrite();
- if(is_array(current($filter))){
- foreach ($filter as $key=>$value){
- $BulkWrite->update($value,$data[$key]);
- }
- }else{
- // var_dump($filter);
- // var_dump($data);
- $BulkWrite->update($filter,$data);
- }
- $this->Manage->executeBulkWrite($this->config['db'].".".$collection,$BulkWrite);
- }
- /**
- * @param $collection
- * @param $filter
- * @return array
- * 查看数据
- */
- public function select($collection,$filter){
- $Query=new MongoDB\Driver\Query($filter);
- $cursor=$this->Manage->executeQuery($this->config['db'].".".$collection,$Query);
- return $cursor->toArray();
- }
- }
PHP使用MongoDB类操作MongoDB数据库总结的更多相关文章
- 42.QT-QSqlQuery类操作SQLite数据库(创建、查询、删除、修改)详解
Qt 提供了 QtSql 模块来提供平台独立的基于 SQL 的数据库操作.这里我们所说的“平台 独立”,既包括操作系统平台,也包括各个数据库平台,Qt支持以下几种数据库: QT自带SQLITE数据库, ...
- [MongoDB]Python 操作 MongoDB
from pymongo import MongoClient mc = MongoClient('localhost',27017) db = mc.users db.users.save({'na ...
- Mongodb Manual阅读笔记:CH2 Mongodb CRUD 操作
2 Mongodb CRUD 操作 Mongodb Manual阅读笔记:CH2 Mongodb CRUD 操作Mongodb Manual阅读笔记:CH3 数据模型(Data Models)Mong ...
- 在MVC模式下通过Jqgrid表格操作MongoDB数据
看到下图,是通过Jqgrid实现表格数据的基本增删查改的操作.表格数据增删改是一般企业应用系统开发的常见功能,不过不同的是这个表格数据来源是非关系型的数据库MongoDB.nosql虽然概念新颖,但是 ...
- nodejs操作mongodb数据库封装DB类
这个DB类也算是我经历了3个实际项目应用的,现分享出来,有需要的请借鉴批评. 上面的注释都挺详细的,我使用到了nodejs的插件mongoose,用mongoose操作mongodb其实蛮方便的. 关 ...
- python操作MONGODB数据库,提取部分数据再存储
目标:从一个数据库中提取几个集合中的部分数据,组合起来一共一万条.几个集合,不足一千条数据的集合就全部提取,够一千条的就用一万减去不足一千的,再除以大于一千的集合个数,得到的值即为所需提取文档的个数. ...
- C# Asp.net中简单操作MongoDB数据库(二)
C# Asp.net中简单操作MongoDB数据库(一) , mongodb数据库连接可以回顾上面的篇幅. 1.model类: public class BaseEntity { /// < ...
- C# Asp.net中简单操作MongoDB数据库(一)
需要引用MongoDB.Driver.dll.MongoDB.Driver.core.dll.MongoDB.Bson.dll三个dll. 1.数据库连接: public class MongoDb ...
- PHP操作MongoDB数据库的示例
http://www.jquerycn.cn/a_8137 本节内容:PHP操作MongoDB数据库的简单示例. Mongodb的常用操作参看手册,php官方的http://us2.php.net/m ...
随机推荐
- linux简单的命令
本文转自 https://www.cnblogs.com/pyyu/articles/9314206.html Linux命令行的组成结构 [root@oldboy_python ~]# [root@ ...
- django-ContentType的简单使用
ContentType 一般我们有多张表同时外键关联同一张表的时候,可以考虑使用ContentType models.py from django.db import models from djan ...
- LGOJ P2048 [NOI2010]超级钢琴
题目描述 小Z是一个小有名气的钢琴家,最近C博士送给了小Z一架超级钢琴,小Z希望能够用这架钢琴创作出世界上最美妙的音乐. 这架超级钢琴可以弹奏出n个音符,编号为1至n.第i个音符的美妙度为Ai,其中A ...
- zookeeper先验知识(2PC+paxos)
一.2PC两阶段提交: 在分布式事务中,每个机器节点只能够明确知道自己事务操作的结果,是成功还是失败,而无法获取其他分布式节点的操作结果,因此在事务操作需要跨多个分布式节点时,需要引入一个协调者统一调 ...
- 【CSP-S 2019】【洛谷P5665】划分【单调队列dp】
前言 \(csp\)时发现自己做过类似这道题的题目 : P4954 [USACO09Open] Tower of Hay 干草塔 然后回忆了差不多\(15min\)才想出来... 然后就敲了\(88p ...
- P4357 [CQOI2016]K远点对
题意:给定平面中的 \(n\) 个点,求第 \(K\) 远的点对之间的距离,\(n\leq 1e5,K\leq min(100,\frac{n\times (n-1)}{2})\) 题解:kd-tre ...
- git中常用命令
1.全局安装git Git-2.11.1-64-bit() //配置gitgit config --global user.name "您的git账号名"git config -- ...
- (尚010)Vue列表的搜素和排序
1.test010.html <!DOCTYPE html><html lang="en"><head> <meta charset=&q ...
- 汇编知识之EIP寄存器
eip寄存器存储着我们cpu要读取指令的地址,没有了它,cpu就无法读取下面的指令(通俗点讲cpu就无法执行.每次相应汇编指令执行完相应的eip值就会增加. 因为80386 cpu的寻址范围是4GB. ...
- 【一起来烧脑】读懂JQuery知识体系
背景 在现在就业的过程中,会运用JQuery是你的加分项,那么什么是JQuery,嗯,jquery是JavaScript的函数库,是一种轻量级的JavaScript库,写得少,做的多,导致jQuery ...