php软件开发--mongodb

 2023-09-17 阅读 23 评论 0

摘要:mongodb介绍,相关概念及安装: mongodbMongoDB 是一个介于关系数据库和非关系数据库之间的产品缺点:不支持连表查询,不支持sql语句,不支持事务存储过程等,所以不适合存储数据间关系比较复杂的数据,一般主要是当做一个数据仓库

mongodb介绍,相关概念及安装:

mongodbMongoDB 是一个介于关系数据库和非关系数据库之间的产品缺点:不支持连表查询,不支持sql语句,不支持事务存储过程等,所以不适合存储数据间关系比较复杂的数据,一般主要是当做一个数据仓库来使用。需要掌握几个概念文档:是mongoDB中数据的基本单元,区分大小写的数据类型集合:是一组文档,多个文档组成一个集合数据库:多个集合可以组成数据库。一个mongoDB实例可以承载多个数据库,他们之间完全独立。一个数据库中可以有多个集合。一个集合中可以有多个文档。安装mongodb:下载、双击安装、服务端(服务器启动,命令行启动) 端口27017./mongodb --dbpath ../data --logpath ../log.log --port 27017 [--fork]数据库目录、日志目录、端口

常用指令及增删改查:

入门语句:创建数据库:use  数据库名查看数据库:show 数据库名创建集合:db.集合名.insert({})查看集合:db、show tables查询集合里面的文档:db.集合名.find()  查询所有db.集合名.findOne()   查询第一个文档删除集合:db.集合名.drop();删除数据库:use  数据库db.dropDatabase()帮助命令:help、db.help()、db.集合名.help()增删改查操作添加文档:db.集合名.insert({k1:’v1’,k2:’v2’…..})删除文档:db.集合名.remove({条件})(不写条件删除所有的文档)$lt , $lte , $gt , $gte   ( < , <= , > , >= ), $ne ( <> ) ,$in , $nin ,  $or ,  $not,$mod (取模),  $exists, $where更新文档:db.集合名.update({条件},{新的文档},是否新增,是否修改多条)db.集合.update(条件,新文档, 是否新增, 是否修改多条)db.集合名.update({条件},{修改器名称:{修改的键:修改的新值}})查询文档:db.集合名.find({条件}).sort({}).skip().limit().count()

用户权限及索引:

用户管理(权限控制)mongodb里面的用户是属于数据库的,每个数据库有自己的管理员,管理员登录后,只能操作所属的数据库。创建超级管理员:use  admindb.createUser({ user:'root', pwd:'123456', roles:[{role:'root',db:'admin'}] })修改 Mongodb 数据库配置文件:mongod.cfg:security:authorization: enabled重启 mongodb 服务:超级管理员账户连接数据库:mongo 数据库名称  -u 用户名 -p 密码mongo  admin -u 用户名 -p 密码远程连接:mongo IP地址:端口/数据库名称 -u 用户名 -p 密码给PHP库创建一个普通管理员:use phpdb.createUser( { user: "phpadmin", pwd: "123456", roles: [ { role: "dbOwner", db: "php" } ] } )Mongodb 账户权限配置中常用的命令:show users; #查看当前库下的用户db.dropUser("eggadmin") #删除用户db.updateUser( "admin",{pwd:"password"}); #修改用户密码db.auth("admin","password"); #密码认证Mongodb 数据库角色:(1)数据库用户角色:read、readWrite;(2)数据库管理角色:dbAdmin、dbOwner、userAdmin;(3)集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;(4)备份恢复角色:backup、restore;(5)所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、 dbAdminAnyDatabase(6)超级用户角色:rootmongodb中索引索引是对数据库表中一列或多列的值进行排序的一种结构,可以让我们查询数据库变得 更快创建索引:db.集合名.ensureIndex({键名:1}) 1是升续 -1是降续多列索引(复合索引):db.集合名.ensureIndex({field1:1/-1, field2:1/-1});子文档索引:db.集合名.ensureIndex({filed.subfield:1/-1});唯一索引:db.集合名.ensureIndex({name:-1},{unique:true})查看索引:db.集合名.getIndexes();explain executionStats 查询具体的执行 时间db.tablename.find().explain( "executionStats" )关注输出的如下数值:explain.executionStats.executionTimeMillis删除索引:单:db.集合名.dropIndex({filed:1/-1});所有:db.集合名.dropIndexes();重建索引:mysql:optimize table 表名整理索引碎片db.集合名.reIndex()索引使用注意事项:(1)创建索引的时候,注意1是正序创建索引  -1是倒叙创建索引(2)索引的创建在提高查询性能的同时会影响插入性能,对于经常查询少插入的文档可以考虑用索引(3)复合索引要注意索引的先后顺序。(4)每个键全建立索引不一定就能提高性能,索引不是万能的。(5)在做排序工作的时候如果是超大数据量也可以考虑加上索引用来提高排序的性能。

mongdb中数据导出与导入、主从复制、php操作mongodb及linux安装:

mongdb中数据导出与导入利用mongoexport-h host主机--port 端口-d 指明使用的库-c 指明要导出的集合-o 指明要导出的文件名--csv指定导出的csv格式-q 过滤导出-f field1 field2  列名-u username 用户名-p password 密码导入:mongoexport -h localhost -d phpDB -c phpList -o e:/php.json -u phpadmin -p 123456使用mongoimport命令-d 待导入的数据库-c 待导入的集合(不存在会自己创建)--type csv/json(默认)--file 备份文件名称包含路径导出:mongoimport -h localhost -d phpDB -c phpList --file e:/php.json -u phpadmin -p 123456主从复制(读写分离)主从复制是一个简单的数据库同步备份的集群技术。在数据库集群中要明确的知道谁是主服务器,主服务器只有一台。从服务器要知道自己的数据源也就是对于的主服务是谁。--master用来确定主服务器,--slave和--source来控制从服务器。主:--port --dbpath –logpath --master从:--port –dbpath –logpath –slave –source 127.0.0.1:1111php操作mongodb下载mongodb扩展php(版本、线程、vc、位数)移动ext、打开php.ini查看:phpinfoMongoDB\Driver\Manager("mongodb://phpadmin:123456@localhost:27017/php");插入:$bulk = new MongoDB\Driver\BulkWrite;$bulk->insert(['name'=>'刘备','age'=>12,'email'=>'liubei@sohu.com']);$manager->executeBulkWrite('php.stu', $bulk);查询:$filter = ['age'=>['$gt'=>16]];$options = ['projection'=>['_id'=>0],'sort'=>['age'=>1]];$query = new MongoDB\Driver\Query($filter, $options);$data = $manager->executeQuery('php.stu', $query);更新:$bulk = new MongoDB\Driver\BulkWrite;$bulk->update(['age' => 12],['$set' => ['name' => '刘备被', 'email' => 'liubeibei@sohu.com']],['multi' => false, 'upsert' => false]);$writeConcern = new MongoDB\Driver\WriteConcern(MongoDB\Driver\WriteConcern::MAJORITY, 1000);$result = $manager->executeBulkWrite('php.stu', $bulk, $writeConcern);删除:$bulk = new MongoDB\Driver\BulkWrite;$bulk->delete(['age' => 22], ['limit' => 1]);   // limit 为 1 时,删除第一条匹配数据//$bulk->delete(['x' => 2], ['limit' => 0]);   // limit 为 0 时,删除所有匹配数据$writeConcern = new MongoDB\Driver\WriteConcern(MongoDB\Driver\WriteConcern::MAJORITY, 1000);$result = $manager->executeBulkWrite('php.stu', $bulk, $writeConcern);
linux安装mongodb:./mongodb --dbpath ../data --logpath ../log.log --port 27017 --fork数据库目录、日志目录、端口

 

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/1/72201.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息