赞
踩
- 创建数据库
- use dade
- 查询数据库
- show dbs
- 创建集合插入数据
- db.集合名.insert({})
- db.dade.insert({dade:'大得',age:18})
-
- 查看集合
- show tables
-
- 查看集合中的数据
- db.集合名.find() 查询所有
- db.dade.find()
-
- db.集合名.findOne() 查询第一个文档
- 删除集合
- db.集合名.drop();
-
- 删除数据库
- use 数据库
- db.dropDatabase()
- $lt , $lte , $gt , $gte ( < , <= , > , >= ), $ne ( <> ) ,$in , $nin , $or , $not,
- $mod (取模), $exists, $where
- 1、增
- use dade 切换数据库
- db.集合名.insert({name:’xiaobai’,spc:{weight:100,address:’guangzhou’}})
- db.dade.insert({dade:'大得',age:1818})
-
- 2、删除
- db.dade.remove({age:1818})
- 删除大于18的
- db.dade.remove({age:{'$gt':18}})
-
- 3、修改
- 这个age大于18的修改name值,注意其他值丢失
- db.dade.update({age:{'$gt':18}},{name:'修改'})
-
- 这个修改其他数据不丢失,修改age等于18的
- db.dade.update({age:18},{'$set':{name:10}})
-
- 这个数据统计,如是20,+10,操作后是30
- db.dade.update({age:1818},{'$inc':{name:10}})
-
- 4、查文档,dade是集合名
- 查所有
- db.dade.find()
-
- 查第一条
- db.dade.findOne();
-
- 查age等于18的
- db.dade.find({age:18})
-
- 查age大于18的
- db.dade.find({age:{'$gt':18}})
-
- 查询只拿name值,1只表示显示name值
- db.dade.find({},{name:1})
-
- 排除age,0表示排除
- db.dade.find({},{age:0})
-
- 升序,根据年龄升序
- db.集合名.find().sort({age:1})
-
- 倒序,根据年龄降序
- db.集合名.find().sort({age:-1})
-
- 显示集合前三的文档
- db.集合.find().limit(3)
-
- 集合分页
- db.集合.find().skip(2).limit(5)
-
- 获得集合总条数
- db.集合名.count()
- /66/,/相当mysql的%
- db.dade.find({dade:/66/})
- 包含
- db.dade.find({age:{'$in':[18,1818]}})
- 不包含
- db.dade.find({age:{'$nin':[18,1818]}})
- 登录mongodb的客户端,使用如下命令
-
- 1、创建超级管理员
- use admin
- db.createUser({ user:'root', pwd:'123456', roles:[{role:'root',db:'admin'}]})
-
- 2、修改 Mongodb 数据库配置文件,enabled开启
- security:
- authorization: enabled
-
- 3、重启 mongodb 服务
-
-
- 4、创建普通账号
- use dade
- db.createUser( { user: "phpadmin", pwd: "123456", roles: [ { role: "dbOwner", db: "php" } ] } )
-
-
- 5、查看当前库下的用户
- show users;
-
- 6、删除用户
- db.dropUser("dade")
-
- 7、修改密码
- db.updateUser( "admin",{pwd:"password"}); #修改用户密码
- db.auth("admin","password"); #密码认证
- (1)数据库用户角色:read、readWrite;
- (2)数据库管理角色:dbAdmin、dbOwner、userAdmin;
- (3)集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;
- (4)备份恢复角色:backup、restore;
- (5)所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、 dbAdminAnyDatabase
- (6)超级用户角色:root
- 1、为name创建索引
- db.集合名.ensureIndex({name:1})
- db.集合名.ensureIndex({键名:1}) 1是升续 -1是降续
-
- 2、多列索引
- db.集合名.ensureIndex({field1:1/-1, field2:1/-1});
-
- 3、子文档索引
- db.集合名.ensureIndex({filed.subfield:1/-1})
-
- 如下文档可以建立子文档索引
- {name:’诺基亚手机1’,price:12.34,spc:{weight:100,area:’纽约’}}
- {name:’诺基亚手机2’,price:42.34,spc:{weight:200,area:’伦敦’}}
- 比如要查询weight等于100的文档。
- db.goods.find({‘spc.weight’:100})
- 根据当前案例,我们建立子文档索引
- db.集合名.ensureIndex({'spc.weight':1})
-
- 4、唯一索引
- db.集合名.ensureIndex({name:-1},{unique:true})
-
- 5、查看索引
- 常用命令:
- (1)查看当前索引状态: db.集合名.getIndexes();
- (2)详情查看本次查询使用哪个索引和查询数据的状态信息。
- explain executionStats 查询具体的执行 时间
- db.tablename.find().explain( "executionStats" )
- 关注输出的如下数值:explain.executionStats.executionTimeMillis
-
- 6、删除索引
- 删除单个索引
- db.集合名.dropIndex({filed:1/-1});
-
- 删除所有索引
- db.集合名.dropIndexes();
- 注意:在删除所有的索引时,主键索引会保留。
-
- 7、重建索引
- 一个表经过很多次修改后,导致表的文件产生空洞,索引文件也如此.
- 可以通过索引的重建,减少索引文件碎片,并提高索引的效率.
- 类似mysql中的optimize table
- mysql里面使用optimize table语法:optimize table 表名
- 语法:db.集合名.reIndex()
-
- 8、索引使用注意事项
- (1)创建索引的时候,注意1是正序创建索引 -1是倒叙创建索引
- (2)索引的创建在提高查询性能的同时会影响插入性能,对于经常查询少插入的文档可以考虑用索引
- (3)复合索引要注意索引的先后顺序。
- (4)每个键全建立索引不一定就能提高性能,索引不是万能的。
- (5)在做排序工作的时候如果是超大数据量也可以考虑加上索引用来提高排序的性能。
- 1、导出数据
- 导入/导出可以操作的是本地的mongodb服务器,也可以是远程的,所以,都有如下通用选项。
- 利用mongoexport
- -h host主机
- --port 端口
- -d 指明使用的库
- -c 指明要导出的集合
- -o 指明要导出的文件名
- --csv指定导出的csv格式
- -q 过滤导出
- -f field1 field2 列名
- -u username 用户名
- -p password 密码
- 如下操作,
- 注意:如果端口是默认的可以不使用--port来指定端口。
- 比如我们要导出php库下面的Java集合,
- E:\Program Files\MongoDB\Server\4.0\bin>mongoexport -h localhost -d php -c java -o e:/nihao.json -u phpadmin -p 123456
-
- 2、导入数据
- 使用mongoimport命令
- -d 待导入的数据库
- -c 待导入的集合(不存在会自己创建)
- --type csv/json(默认)
- --file 备份文件名称包含路径
-
- 例1: 导入json
- ./bin/mongoimport -h --port 端口号 -d test -c goods --file ./goodsall.json
- 例2: 导入csv
- ./bin/mongoimport -h --port 端口号 -d test -c goods --type csv -f goods_id,goods_name --file ./goodsall.csv
- ./bin/mongoimport -h --port 端口号 -d test -c goods --type csv --headline -f goods_id,goods_name --file ./goodsall.csv
- 案例:把刚才导出的nihao.json文件导入到php库里面的user集合里面。
- E:\Program Files\MongoDB\Server\4.0\bin>mongoimport -h localhost -d php -c nihao --file e:/nihao.json -u phpadmin -p 123456
- 可以通过不同端口来模拟多台mongodb服务器
-
- 具体的配置步骤
- 1、启动主服务器
- --port --dbpath –logpath --master
-
- 2、启动从服务器
- --port –dbpath –logpath –slave –source 127.0.0.1:1111
-
- 3、客户端登陆到主服务器
- 添加一些数据,测试是否同步到从服务器
- 如下在主服务器里面,添加了一些文档
- 第一步:客户端登录到主服务器,添加一些文档
- mongo localhost:1111
-
- 登陆到从服务器,查看是否有数据
- mongo localhost:2222
- 如果有数据,则成功了
- 配置数据库,在数据库配置文件
- 'mongo'=>[
- 'type' => 'mongo',
- 'hostname' => '127.0.0.1',
- 'database' => 'database',
- 'username' => '',
- 'password' => '',
- 'hostport' => '27017'
- ]
-
- 新增
- $res = Db::connect('mongo')->table('news')->insertGetId($data);
- 查询
- $res = Db::connect('mongo')->table('news')->select();
- 单条件查询
- $mangoList = Db::connect('mongo')->table('news')->where('id','76')->select();
- 更新
- $mangoList = Db::connect('mongo')->table('news')->where('id','76')->update([
- 'title'=>'eeeeeeeeeee'
- ]);
- 删除
- $mangoList = Db::connect('mongo')->table('news')->where('id','75')->delete();
- $mangoList = Db::connect('mongo')->table('news')->where('_id','6021506535f34b1ef9497352')->delete();
-
- 插入
- $mongo = new MongoClient('mongodb://localhost:27017');
- $db = $mongo->mf; //选择数据库
- $collection = $db->friend; //选择文档集合
- $doc = [ //定义一个文档,即一个数组
- 'First Name' = >'Jet', 'Last Name' = >'Wu', 'Age' = >26, 'Phone' = >'110', 'Address' = >['Country' = >'China', 'City' = >'Shen Zhen'], 'E-Mail' = >['123456@qq.com', '666666@sina.com', '8888888@qq.com', '77887788@qq.com']];
- $res = $collection->insert($doc);
-
- 查询
- $mongo = new MongoClient('mongodb://localhost:27017');
- $db = $mongo - >mf;
- $collection = $db->friend;
- $cursor = $collection->find(['Address'=>'China']);
14、php安装mongodb扩展
https://windows.php.net/downloads/pecl/releases/mongodb/
注意:扩展文件
下载合适的php_mongodb.dll文件。
(1)php的版本
(2)是否是线程安全的thread safe(ts)
(3)是vc几的
(4)php是32位的还是64位的。
步骤:
(1)把对应的扩展,拷贝到php的安装目录里面的ext目录里面。
注意:拷贝后,改名为php_mongo.dll
(2)打开php.ini文件,引入该扩展,
(3)重启apache,
使用phpinfo()函数测试
tp6配置
安装
composer require topthink/think-mongo
- // 更多的数据库配置信息
- 'mongo'=>[
- 'type' => 'mongo',
- 'hostname' => '127.0.0.1',
- 'database' => '数据库名称',
- 'username' => '',
- 'password' => '',
- 'hostport' => '27017'
- ]
操作篇
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。