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;

相关推荐
爱吃牛肉的大老虎14 小时前
rust基础之环境搭建
java·开发语言·rust
openKylin14 小时前
与全球技术演进同频,openKylin 3.0从C迈向Rust
c语言·开发语言·rust·开源·开放原子·openkylin
疯狂打码的少年15 小时前
【软件工程】结构化设计:模块独立性与耦合内聚
java·开发语言·笔记·软件工程
程高兴16 小时前
PMSM基于在线转动惯量辩识的滑模负载转矩观测器MATLAB-SIMULINK仿真模型
开发语言·matlab
kisloy16 小时前
【python零基础教程第24讲】代码规范与质量管控
开发语言·python
C++、Java和Python的菜鸟16 小时前
第4章 后端Web基础(基础知识)
java·开发语言
芷栀夏16 小时前
Java教育平台实战复盘:课程、考试与学习行为分析系统设计
java·开发语言·学习
从零开始的代码生活_16 小时前
C++ 多态详解:虚函数、动态绑定、抽象类与虚表原理
开发语言·c++·后端·学习·算法
xywww16816 小时前
AWS 账号权限怎么分:根用户和 IAM 用户区别及日常使用建议
大数据·开发语言·人工智能·python·gpt·云计算·aws
大彼方..17 小时前
C++ STL Vector 深度剖析:从内存管理到性能优化
开发语言·c++