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 协议》,转载必须注明作者和本文链接