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;

相关推荐
BingoGo11 小时前
当你的 PHP 应用的 API 没有限流时会发生什么?
后端·php
JaguarJack11 小时前
当你的 PHP 应用的 API 没有限流时会发生什么?
后端·php·服务端
BingoGo1 天前
OpenSwoole 26.2.0 发布:支持 PHP 8.5、io_uring 后端及协程调试改进
后端·php
JaguarJack1 天前
OpenSwoole 26.2.0 发布:支持 PHP 8.5、io_uring 后端及协程调试改进
后端·php·服务端
JaguarJack2 天前
推荐 PHP 属性(Attributes) 简洁读取 API 扩展包
后端·php·服务端
BingoGo2 天前
推荐 PHP 属性(Attributes) 简洁读取 API 扩展包
php
AI全栈实验室3 天前
MongoDB迁移金仓踩了5个坑,最后一个差点回滚
mongodb
JaguarJack3 天前
告别 Laravel 缓慢的 Blade!Livewire Blaze 来了,为你的 Laravel 性能提速
后端·php·laravel
郑州光合科技余经理4 天前
代码展示:PHP搭建海外版外卖系统源码解析
java·开发语言·前端·后端·系统架构·uni-app·php
feifeigo1234 天前
matlab画图工具
开发语言·matlab