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;

相关推荐
martian665几秒前
QT开发:基于Qt实现的交通信号灯模拟器:实现一个带有倒计时功能的图形界面应用
开发语言·qt
冷琴19968 分钟前
基于java+springboot的酒店预定网站、酒店客房管理系统
java·开发语言·spring boot
缘友一世16 分钟前
macOS .bash_profile配置文件优化记录
开发语言·macos·bash
tekin19 分钟前
macos 中使用macport安装,配置,切换多版本php,使用port 安装php扩展方法总结
开发语言·macos·php·port·mac多版本php安装管理·port-select
CSXB9928 分钟前
一、Python(介绍、环境搭建)
开发语言·python·测试工具·集成测试
火红的小辣椒37 分钟前
PHP反序列化7(字符串逃逸)
开发语言·web安全·php
三玖诶1 小时前
第一弹:C++ 的基本知识概述
开发语言·c++
wjs20241 小时前
Chrome 浏览器:现代网络浏览的先锋
开发语言
爱学的小涛1 小时前
【NIO基础】基于 NIO 中的组件实现对文件的操作(文件编程),FileChannel 详解
java·开发语言·笔记·后端·nio
吹老师个人app编程教学1 小时前
详解Java中的BIO、NIO、AIO
java·开发语言·nio