MongoDB 使用

mongoDB是一个基于分布式文件存储的数据库,由C++编写,旨在为web应用提供可扩展的高性能的数据存储解决方案。它是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库中的功能最丰富,最像关系数据库的。

mongoDB链接

mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]

1.mongoDB PHP7以上版本用法,如果是PHP7以下可以参考 菜鸟教程https://www.runoob.com/mongodb/mongodb-php...

use  m7jiMongoDB\Driver\BulkWrite;
use MongoDB\Driver\Query;

$manager = new MongoDB\Driver\Manager('mongodb://localhost:27017');
$bulk    = new MongoDB\Driver\BulkWrite();


//插入数据
  $bulk->insert(['x' => 1, 'name' => 'jay', 'text' => '周杰伦']);
  $bulk->insert(['x' => 2, 'name' => 'jj', 'text' => '林俊杰']);
 $bulk->insert(['x' => 3, 'name' => 'tom', 'text' => '汤姆']);
 $bulk->insert(['x' => 4, 'name' => 'kai', 'text' => '凯']);

 $manager->executeBulkWrite('test.sites', $bulk);

//读取数据
  $filter  = ['x' => ['$gt' => 0]];
  $options = [* 'projection' => ['x' => 0],
  'sort'       => ['x' => -1]
  ];

  $query = new MongoDB\Driver\Query($filter, $options);
  $list  = $manager->executeQuery('test.sites', $query);

//修改
/**
 * 第一个数组是查询条件
 * 第二个数组是 更新内容
 * 第三个数组 multi 默认为 false,如果是为true 则更新全部符合条件的,为false 只更新第一个、upsert 默认为false,为true 不存在 则新增
 */

  $bulk->update([
  'x' => 5,
  ], [
  '$set' => ['text' => 'xx']
  ], [
  'multi'=>true,'upsert'=>true
  ]);

  $manager->executeBulkWrite('test.sites', $bulk);

//删除
// limit =0 删除所有匹配数据,limit=1删除第一条匹配数据
$bulk->delete(['text' => 'xxx'], ['limit' => 0]);
$manager->executeBulkWrite('test.sites', $bulk);

2.使用composer 依赖,更加方便

composer require mongodb/mongodb 

$mongoClient = new MongoDB\Client('mongodb://127.0.0.1:27017');
$collection = $mongoClient->mongo_test->users;

//插入单条数据
$insertData = [ 
   'id' => 2, 
   'name' => 'liuyuanxiu',
   'age' => 100, 
   'hobby' => '音乐,跑步'
   ];
$result = $collection->insertOne($insertData);

//插入多条数据 
$insertManyData = []; 
for ($i = 6; $i < 60; $i++) { 
    $insertManyData[] = [
    'id' => $i, 
    'name' => 'user_' . $i, 
    'age' => rand(10, 100), 'hobby' => '电影'   
    ]; 
}
$res = $collection->insertMany($insertManyData); 
echo $res->getInsertedCount(); 
var_dump($res->getInsertedIds());

//查询
$row = $collection->findOne(['name' => 'karen']); 
$filters = [ 'id' => ['$gt' => 30] ]; $many = $collection->find($filters)->toArray();
$curSur = $collection->find([ 'name'=>new MongoDB\BSON\Regex('^user','i') ]);

//更新 
$res1 = $collection->updateOne(['id'=>1],['$set'=>['name'=>'shen_guo_wei']]); $res2 = $collection->updateMany(['id'=>['$gt'=>50]],['$set'=>['age'=>10]]);

//删除
$collection->deleteOne(['id'=>5]); $collection->deleteMany(['id'=>['$gt'=>20]]);

3.命令行操作

show dbs 查看所有数据库
use dbname 切换到指定数据库(如果不存在即创建)
db.dropDatabase() 删除当前数据库

show collections 查看当前数据库下的集合
db.集合名.drop() 删除集合
db.createCollections(name,{选项}) 创建集合
db.集合名.insert({'name':'shen','age':20}}) 新增单条
db.集合名.insertMany([{},{}]) 新增多条
db.集合名.update(query,//查询条件
                 update,//更新对象和内容
                      {
                        upsert:bool,//可选,默认false,如果true 记录不存在则新增记录
                        multi:bool,//可选 默认false,如果为true 更新所有符合条件记录
                        write:document //可选 抛出异常级别 
                        }
                    )

 db.集合名.remove(query,//可选 查询条件
                  justOne,//可选 true 只删除一个文档,默认 false 删除所有符合条件
                  write,//可选 抛出异常级别 
 ) 移除集合数据
 db.集合名.deleteOne(query)
 db.集合名.deleteMany(query)

db.集合名.find(quey,//可选,查询条件
               projection // 使用投影操作符执行返回的键 
               ) 查找
db.集合名.find().limit().skip().sort({字段:1 升序,-1 降序}) // limit 截取条数,skip 起始位置   
db.集合名.createIndex({字段:1},{选项}})     

db.集合.aggregate()                            
db.集合名.findOne()                
db.集合名.getIndexes() 查看索引
本作品采用《CC 协议》,转载必须注明作者和本文链接
UKNOW
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!