当前位置: 首页 > news >正文

mongoDB操作文档(全部)

mongoDB

1、创建、查询数据库

创建数据库
use dade
查询数据库
show dbs

2、创建集合、查看

创建集合插入数据
db.集合名.insert({})
db.dade.insert({dade:'大得',age:18})
​
查看集合
show tables
​
查看集合中的数据
db.集合名.find()  查询所有
db.dade.find()
​
db.集合名.findOne()   查询第一个文档

3、删除集合、删除数据库

删除集合
db.集合名.drop();
​
删除数据库
use 数据库
db.dropDatabase()

4、操作符

$lt , $lte , $gt , $gte   ( < , <= , > , >= ), $ne ( <> ) ,$in , $nin ,  $or ,  $not,  
$mod (取模),  $exists, $where 

4、增、删、改、查

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()

5、模糊查询

/66/,/相当mysql的%
db.dade.find({dade:/66/})

6、$in查询

包含
db.dade.find({age:{'$in':[18,1818]}})
不包含
db.dade.find({age:{'$nin':[18,1818]}})

7、mongoDB账号管理

登录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"); #密码认证

8、Mongodb 数据库角色

(1)数据库用户角色:read、readWrite; 
(2)数据库管理角色:dbAdmin、dbOwner、userAdmin; 
(3)集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager; 
(4)备份恢复角色:backup、restore; 
(5)所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、 dbAdminAnyDatabase 
(6)超级用户角色:root

9、Mongodb 中索引

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)在做排序工作的时候如果是超大数据量也可以考虑加上索引用来提高排序的性能。

10、Mongodb 中数据导出与导入

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

11、主从复制(读写分离)

可以通过不同端口来模拟多台mongodb服务器
​
具体的配置步骤
1、启动主服务器
--port --dbpath –logpath --master
​
2、启动从服务器
--port –dbpath –logpath –slave –source 127.0.0.1:1111
​
3、客户端登陆到主服务器
添加一些数据,测试是否同步到从服务器
如下在主服务器里面,添加了一些文档
第一步:客户端登录到主服务器,添加一些文档
mongo localhost:1111
​
登陆到从服务器,查看是否有数据
mongo localhost:2222
如果有数据,则成功了

12、tp6使用mongodb

配置数据库,在数据库配置文件
'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();
​

13、php操作

插入
$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'
]

操作篇

https://blog.csdn.net/qq_34631220/article/details/128173120?csdn_share_tail=%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rId%22%3A%22128173120%22%2C%22source%22%3A%22qq_34631220%22%7D

相关文章:

  • 设计模式(三):抽象工厂模式
  • Django框架模板位置(默认自定义)
  • StatusBar,状态栏设置中文
  • AI视频教程下载:用ChatGPT和 MERN 堆栈构建 SAAS 项目
  • 主成分分析(PCA):揭秘数据的隐藏结构
  • 华为机试:粮油买卖
  • 【AIGC】基于深度学习的图像生成与增强技术
  • 2024智慧城市革命:人工智能、场景与运营的融合之力
  • 【C语言】学生宿舍信息管理系统
  • Leetcode3044. 出现频率最高的质数
  • FullCalendar日历组件:进行任务增删改,参考gitee例子修改
  • CentOS 7全系列免费
  • 基于SSM的服装商城销售系统(含文档资料)
  • 【力扣·每日一题】1774. 最接近目标价格的甜点成本 (dfs搜索 动态规划 Go)
  • Activiti7工作流(二)
  • [附源码]计算机毕业设计大学生心理测评系统
  • 【spring——命名空间与自动装配】P命名、C命名、Util命名、基于名字自动装配、基于类型自动装配、外部properties文件引入
  • 数据结构—List集合
  • 博图Modbus组态及参数设定源码
  • DockerCompose安装、使用 及 微服务部署实操
  • 非零基础自学Golang 2 开发环境 2.4 Git 安装
  • 06 估计量的评优准则
  • [附源码]计算机毕业设计校刊投稿系统Springboot程序
  • 【Kotlin 协程】协程异常处理 ② ( SupervisorJob 协程 | supervisorScope 协程作用域构建器函数 )
  • 【世界杯】free-api-worldcup2022 免费世界杯API
  • Qt OpenGL(二十五)——Qt OpenGL 核心模式-Qt封装的函数实现彩色三角形
  • LeetCode 0542. 01 矩阵
  • 【C++智能指针】智能指针的发展和循环引用的原理和解决
  • 央企招聘:正式编制!八险三金!各项福利!中国邮政招人啦!
  • 欧拉公式 Euler‘s Formula
  • 0.安装和配置
  • redis我记不住的那些命令(六)