小编复习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;