PHP7操作MongoDB的增删改查和分页操作

原文博客地址www.xiegaosheng.com/post/view?id=96;

<?php

/**
 * Class MongodbClient
 * mongod操作类
 *如果需要自己也可以改成单例模式
 */
class MongodbClient{
   
   protected $mongodb;
   protected $dbname;
   protected $collection;
   protected $bulk;
   protected $writeConcern;
   public function __construct($config)
   {
      if (!$config['dbname'] || !$config['collection']) {
         # code...
         exit('参数错误');
      }
      $this->mongodb = new MongoDB\Driver\Manager("mongodb://localhost:27017");
      $this->dbname = $config['dbname'];
      $this->collection = $config['collection'];
      $this->bulk = new MongoDB\Driver\BulkWrite();
      $this->writeConcern   = new MongoDB\Driver\WriteConcern(MongoDB\Driver\WriteConcern::MAJORITY, 100);
   }

    /**
     * Created by PhpStorm.
     * function: query
     * Description:查询方法
     * User: Xiaoxie
     * Email [email protected].com
     * @param array $where
     * @param array $option
     * @return string
     *
     */
   public function query($where=[],$option=[])
   {
      $query = new MongoDB\Driver\Query($where,$option);
      $result = $this->mongodb->executeQuery("$this->dbname.$this->collection", $query);
      $data = [];
      if ($result) {
         # code...
         foreach ($result as $key => $value) {
            # code...
            array_push($data, $value);
         }
      }

      return json_encode($data);
   }

    /**
     * Created by PhpStorm.
     * function: getCount
     * Description:获取统计数
     * User: Xiaoxie
     * Email [email protected]
     * @param array $where
     * @return int
     *
     */
   public function getCount($where=[])
   {
      $command = new MongoDB\Driver\Command(['count' => $this->collection,'query'=>$where]);
      $result = $this->mongodb->executeCommand($this->dbname,$command);
      $res = $result->toArray();
      $cnt = 0;
      if ($res) {
         # code...
         $cnt = $res[0]->n;
      }

      return $cnt;
   }

    /**
     * Created by PhpStorm.
     * function: page
     * Description:分页数据
     * User: Xiaoxie
     * Email [email protected]
     * @param array $where
     * @param int $page
     * @param int $limit
     * @return string
     *
     */
   public function page($where=[],$page=1,$limit=10)
   {
      
      $count = $this->getCount($where);
      $data['count'] = $count;
      $endpage = ceil($count/$limit);
      if ($page>$endpage) {
         # code...
         $page = $endpage;
      }elseif ($page <1) {
         $page = 1;
      }
      $skip = ($page-1)*$limit;
      $options = [
         'skip'=>$skip,
          'limit'    => $limit
      ];
      $data['data'] = $this->query($where,$options);
      $data['page'] = $endpage;
      return json_encode($data);
   }

    /**
     * Created by PhpStorm.
     * function: update
     * Description:更新操作
     * User: Xiaoxie
     * Email [email protected]
     * @param array $where
     * @param array $update
     * @param bool $upsert
     * @return int|null
     *
     */
   public function update($where=[],$update=[],$upsert=false)
   {
      $this->bulk->update($where,['$set' => $update], ['multi' => true, 'upsert' => $upsert]);
      $result = $this->mongodb->executeBulkWrite("$this->dbname.$this->collection", $this->bulk, $this->writeConcern);
      return $result->getModifiedCount();
   }

    /**
     * Created by PhpStorm.
     * function: insert
     * Description:插入
     * User: Xiaoxie
     * Email [email protected]
     * @param array $data
     * @return mixed
     *
     */
   public function insert($data=[])
   {
      $result = $this->bulk->insert($data);
      return $result->getInsertedCount();
   }

    /**
     * Created by PhpStorm.
     * function: delete
     * Description:删除
     * User: Xiaoxie
     * Email [email protected]
     * @param array $where
     * @param int $limit
     * @return mixed
     *
     */
   public function delete($where=[],$limit=1)
   {
      $result = $this->bulk->delete($where,['limit'=>$limit]);
      return $result->getDeletedCount();
   }
   
}
//实例化调用
$action = $_GET['action']?:exit('参数错误');
$page = $_GET['page']?:1;
$where = json_decode($_GET['where'],true)?:[];
$limit = $_GET['limit']?:'10';
$data = json_decode($_GET['data'],true)?:[];
$option = json_decode($_GET['option'],true)?:[];
$collection = $_GET['collection'];
$mongodb = new MongodbClient(['dbname'=>$dbname,'collection'=>$collection]);

if ($action=='getCount') {
   # code...
   $data = $mongodb->getCount($where);
}elseif($action=='insert')
{
   $data = $mongodb->insert($data);
}
elseif($action=='update')
{
   $data = $mongodb->update($where,$data);
}
elseif($action=='delete')
{
   $data = $mongodb->delete($where);
}
elseif($action=='query')
{
   $data = $mongodb->query($where,$option);
}elseif($action=='page')
{
   $data = $mongodb->page($where,$page,$limit);
}

echo $data;

外部调用的时候只需 127.0.0.1/index.php?action=方法&where=等等参数就会返回json

原文地址:http://blog.51cto.com/11760810/2120456

时间: 2024-10-12 13:00:05

PHP7操作MongoDB的增删改查和分页操作的相关文章

C# 对MongoDB 进行增删改查的简单操作

C# 对MongoDB 进行增删改查的简单操作 下面演示下C#操作MongoDB驱动的简单的增删改查代码 运用到的MongoDB支持的C#驱动,当前版本为1.6.0 下载地址:https://github.com/mongodb/mongo-csharp-driver/downloads 1,连接数据库 /// <summary> /// 数据库连接 /// </summary> private const string conn = "mongodb://127.0.0

PHP操作Mongodb之增删改查篇

之前,我讲解过PHP中mongodb扩展的安装,及启动,链接操作[忘记了?去看看吧!PHP操作Mongodb之一].本文主要就是讲在PHP中Mongodb的增加,查询,修改及删除数据的操作. 1.增加数据 语法格式: $db->insert($array);  //参数表示需要插入的数据 例如:我们插入一个id为1,名称为PHP,年龄为25的数据.代码如下: <?php //连接数据库 $connnect = new Mongo("mongodb://127.0.0.1:27017&

SpringBoot操作MongoDB实现增删改查

本篇博客主讲如何使用SpringBoot操作MongoDB. (1)pom.xml引入依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-mongodb</artifactId> </dependency>1234(2)创建application.yml spring: data: mongod

MongoDB(三)——增删改查

MongoDB作为非关系型数据库,还是传统数据库的增删改查有很大的区别的,这里只是将知识点进行了一下提纲挈领,实际用的时候,我们百度一下详细用法即可.先看大的几个方面: 一,对于里边的插入和删除不再过多赘述,相对来说知识点比较少.先来看一下更新,常用操作还是非常有用的,需要我们根据实际情况灵活运用,这里只是提出了知识点,需要百度出例子来学习使用: 2,查询也是一样,看一下知识点的汇总,其实用几个,还是有规律的,比较容易记录的: 3,看一下固定集合Capped Collection:顾名思义是有着

Scala对MongoDB的增删改查操作

=========================================== 原文链接: Scala对MongoDB的增删改查操作 转载请注明出处! =========================================== 依赖环境:jdk1.8.Scala 2.12.idea mongodb Driver:3.1.1.注意,mongo for scala的驱动涉及多个jar(如下图),依赖于mongo-java-driver.jar 这里使用的sbt管理依赖,直接在bu

Java连接MongoDB进行增删改查

1.导入必须的包: 详情看项目:http://pan.baidu.com/s/1cvDAOY 2.通过Myeclipse创建WEB项目 3. 3.bean:创建实体类 package com.bean; import java.io.Serializable; import java.util.Date; /** * @since 对应于mongodb中的数据库test中的表com * @author think * */ public class Company implements Seri

MongoDB的增删改查 转

MongoDB的增删改查 (黎明你好原创作品,转载请注明) MongoDB中数据的基本单元叫做文档,采用json的键-值的方式.多个键及其关联的值有序的存放在一起变是文档.类似于编程语言中的键值关系.MongoDB文档都是BSON文档,他是一个JSON的二进制形式. MongoDB的文档 MongoDB中文档被存储在集合中.集合是一组有关系索引的文档.集合类似于关系数据库中的表. MongoDB的集合 2.1 方法参考 查询游标方法 名称 说明 cursor.count() 返回游标中的文档的数

MongoDB之增删改查(一)

本文主要介绍MongoDB数据库增删改查操作. 增 mongoDB和其他关系型数据库一样,通过insert来增加数据到集合中去. db.collectionName.insert(内容) 显示数据库中所有集合: show collections 删 MongoDB中通过remove来删除集合中符合一定条件的文档. remove接受一个参数,作为寻找要删除文档的条件: 当然了,也可以直接删除一整个集合,通过drop方法: db.person.drop() 删除集合然后重建索引比删除集合中所有的文档

MongoDB的增删改查

1.启动 - 配置环境变量 MongoDB/3.4/bin 通过命令 mongod 来启动 MongoDB 默认端口 27017 redis:6379 Mysql:3306 可以指定数据库存放目录,但在登录时必须指定路径: mongod --dbpath="指定数据库存放路径" 2.应用连接MongoDB数据库 通过 mongo 指令 进行本地数据库连接 3.MongoDB数据: mysql - 数据库服务 - 数据库 - 数据表 - 字段 - 数据row mongodb - 数据库服