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.html

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() 查看索引

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值