当前位置:网站首页>MongoDB快速入门
MongoDB快速入门
2022-07-07 21:52:00 【逆方向的钟197】
目录
1.简介
是一个开源、高性能、无模式的文档形数据库,mysql是关系型数据库。是那种最像关系型数据库的非关系型数据库。
数据格式非常松散,类似于JSON的格式BSON,他既可以存储比较复杂的数据类型,又比较灵活。
MonggoDB的记录十一文档,它是由一个字段值对(field:value)组成数据结构,类似于json队形
2. 特点:
高性能:支持持久性,索引支持更快长训
高可用:MongoDB的到工具被称为副本集,它可提供自动故障转移和数据冗余
高扩展:分片将数据分布在一组集群的机器上。(海量数据存储,服务能力水平扩展)
丰富的查询支持:B支持丰富的查询语言,支持读和写操作(CRUD),比如数据聚合、文本搜索和地理空间查询等。
3.官网下载
MongoDB Community Download | MongoDB 官网下载
https://fastdl.mongodb.org/windows/mongodb-windows-x86_64-5.0.9.zip 下载连接
命名规范:X.Y.Z的格式
y为奇数时表示当前版本为开发版,如:1.5.2、4.1.13;
4.启动
4.1命令参数方式启动服务
默认端口27017
创建一个存放数据库的文件夹文件夹,在根目录创建了data>db文件夹
在bin目录下 启动命令:
启动命令:ps这个--dbpath=后面的是你数据库要存的文件的地址
ps:后面不能有空格
mongod --dbpath=..\data\db
初始化成功
4.2配置文件方式启动服务
先写一个配置类
在bin目录下写一个conf,在里面写一个个mongod.conf
storage:
#The directory where the mongod instance stores its data.Default Value is "\data\db" on Windows.
dbPath: E:\baidu\MongoDB\mongodb-windows-x86_64-4.4.15\mongodb-win32-x86_64-windows-4.4.15\data\db
ps:dbPath前面空4个空格,点tab会报错
启动命令
在bin目录下
mongod -f ../config/mongod.conf
或
mongod --config ../conf/mongod.conf
5.shell命令连接
方案1:配置环境变量,就在path里面配置mongodb的bin目录
然后在命令行输入:mongo启动
方案2:在bin目录下启动 输入mongo
6.Linux命令安装
首先下载安装包,并导入linux里面
解压:
tar -xvf mongodb-linux-x86_64-4.0.10.tgz
移动到自己的文件夹下
mv mongodb-linux-x86_64-4.0.10 /opt/module/
此时就相当于windows里面默认配置
再按照windows一样方法进行启动 创建data,log,config文件
修改配置文件
systemLog:
#MongoDB发送所有日志输出的目标指定为文件
# #The path of the log file to which mongod or mongos should send all diagnostic logging information
destination: file
#mongod或mongos应向其发送所有诊断日志记录信息的日志文件的路径
path: "/mongodb/single/log/mongod.log"
#当mongos或mongod实例重新启动时,mongos或mongod会将新条目附加到现有日志文件的末尾。
logAppend: true
storage:
#mongod实例存储其数据的目录。storage.dbPath设置仅适用于mongod。
##The directory where the mongod instance stores its data.Default Value is "/data/db".
dbPath: "/mongodb/single/data/db"
journal:
#启用或禁用持久性日志以确保数据文件保持有效和可恢复。
enabled: true
processManagement:
#启用在后台运行mongos或mongod进程的守护进程模式。
fork: true
net:
#服务实例绑定的IP,默认是localhost,115.60.97.40服务器内网地址
bindIp: localhost,115.60.97.40
#bindIp
#绑定的端口,默认是27017
port: 27017
7.Docker安装
后面再补充
8.命令的基本使用
前置:mongodb的存储结构
8.1数据库的操作
use 数据库名称 选择和创建数据与库,如果数据库不存在会直接创建,先创建是再内存中
show dbs 查看有权限查看的数据库内容
show databases 和show dbs一样
ps:
1.再MongosDB中,集合只有再内容插入之后才会创建!,创建集合(数据表后要插入一个文档记录),集合才会出现
2.数据库创建满足一下条件:
1)不能是空字符串 2)不能含有空格,点,$,/,\,和(空字符)3)应该全部小写4)最多64个字节
db 查看当前正在使用的数据库命令,如果没有选择数据库集合默认存放再test数据库中
可以查看use的数据库
保留数据库:
8.2数据库的删除
db.dropDatabase() 用来删除已经持久化的数据库
8.3集合操作
显示创建
db.createCollection("集合名字") 创建集合
show collections 查看创建的集合
db.集合.drop() 删除集合
隐示创建
具体在9,通俗说文档没有就直接创建
9.文档的插入和查询
插入
单插入
db.集合名称.insert(换成save也可以)(
{json数据}
) 单个文档插入
多插入
db.my.insertMany([
{json数据},
{json数据},
{json数据}
]) 多个文档插入
举例:
db.comment.insertMany([
{"_id":"1","articleid":"100001","content":"我们不应该把清晨浪费在手机上,健康很重要,一杯温水幸福你我 他。","userid":"1002","nickname":"相忘于江湖","createdatetime":new Date(),"likenum":NumberInt(1000),"state":"1"},
{"_id":"2","articleid":"100001","content":"我夏天空腹喝凉开水,冬天喝温开水","userid":"1005","nickname":"伊人憔 悴","createdatetime":new Date(),"likenum":NumberInt(888),"state":"1"},
{"_id":"3","articleid":"100001","content":"我一直喝凉开水,冬天夏天都喝。","userid":"1004","nickname":"杰克船 长","createdatetime":new Date(),"likenum":NumberInt(666),"state":"1"},
{"_id":"4","articleid":"100001","content":"专家说不能空腹吃饭,影响健康。","userid":"1003","nickname":"凯 撒","createdatetime":new Date(),"likenum":NumberInt(2000),"state":"1"},
{"_id":"5","articleid":"100001","content":"研究表明,刚烧开的水千万不能喝,因为烫 嘴。","userid":"1003","nickname":"凯撒","createdatetime":new Date(),"likenum":NumberInt(3000),"state":"1"}
]);
查询
db.集合名字.find() db.集合名字.find({}) 文档查询
db.comment.find({"列":"值"}) 查询对应属性
举例:
db.comment.find({"articleid":"100001"})
条件查询
db.comment.find( {"列":"值"} ,{_id:1,articleid:0} ) 第一列标识查的符合条件行,第二行表示查询的列,0表示不显示,1表示显示 举例
db.comment.find({"articleid":"100001"},{_id:1,articleid:0})
删除
db.表.drop() 删除集合
举例
db.comment.drop()
事务
MongoDB不支持事务,但是它可以使用json语法使用try--catch(){print(e)}在提示插入失败
举例:
try{
db.comment.insertMany([
{"_id":"1","articleid":"100001","content":"我们不应该把清晨浪费在手机上,健康很重要,一杯温水幸福你我 他。","userid":"1002","nickname":"相忘于江湖","createdatetime":new Date(),"likenum":NumberInt(1000),"state":"1"},
{"_id":"1","articleid":"100001","content":"我夏天空腹喝凉开水,冬天喝温开水","userid":"1005","nickname":"伊人憔 悴","createdatetime":new Date(),"likenum":NumberInt(888),"state":"1"},
{"_id":"3","articleid":"100001","content":"我一直喝凉开水,冬天夏天都喝。","userid":"1004","nickname":"杰克船 长","createdatetime":new Date(),"likenum":NumberInt(666),"state":"1"},
{"_id":"4","articleid":"100001","content":"专家说不能空腹吃饭,影响健康。","userid":"1003","nickname":"凯 撒","createdatetime":new Date(),"likenum":NumberInt(2000),"state":"1"},
{"_id":"5","articleid":"100001","content":"研究表明,刚烧开的水千万不能喝,因为烫 嘴。","userid":"1003","nickname":"凯撒","createdatetime":new Date(),"likenum":NumberInt(3000),"state":"1"}
]);
} catch (e) {
print (e);
}
10.文档更新
db.集合.update(query,update,options) 以query条件查询,并修改成update里面的内容,options为可选的参数
覆盖修改
db.comment.update({_id:"6"},{content:NumberInt("10002")}) 把query一列全部修改成替换的
局部修改
db.comment.updateOne({_id:"1"},{$set:{articleid:"102"}}) 只修改某一列
批量修改
db.comment.update({userid:"1003"},{$set:{nickname:"凯撒大帝"}},{multi:true})
对multi设置未true
列值增长修改
db.comment.update({_id:"3"},{$inc:{likenum:NumberInt(1)}}) $inc表示自增一
11.文档删除
12.文档分页查询
db.集合.count(query, options) query表示查询条件,options用于修改技术的额外选项
db.comment.count() 查询多少条数据
db.comment.count({articleid:"100001"}) 条件查询多少条数据
db.comment.find().limit(2) 显示前2条数据
db.comment.find().limit(2) .skip(2) 显示两条数据并跳过前两条数据
db.comment.find().sort() 默认以_id为升序
db.comment.find().sort({userid:1}) 以userid为升序1表示升序 -1表示降序
13.更复杂的查询
模糊查询
db.collection.find({field:/正则表达式/})
比较查询
db.集合名称.find({ "field" : { $gt: value }}) // 大于: field > value
db.集合名称.find({ "field" : { $lt: value }}) // 小于: field < value
db.集合名称.find({ "field" : { $gte: value }}) // 大于等于: field >= value
db.集合名称.find({ "field" : { $lte: value }}) // 小于等于: field <= value
db.集合名称.find({ "field" : { $ne: value }}) // 不等于: field != value
举例:查询评论点赞数量大于700的记录
db.comment.find({likenum:{$gt:NumberInt(700)}})
包含查询
db.comment.find({userid:{$in:["1003","1004"]}}) $in表示包含在1003和1004
条件连接
交集$and:[ { },{ },{ } ] 查看likenum字段大于等于700,小于2000
db.comment.find({$and:[{likenum:{$gte:NumberInt(700)}},{likenum:{$lt:NumberInt(2000)}}]})
并集 $or:[ { },{ },{ } ] 查看userid为1003并且 likenum字段小于1000的
db.comment.find({$or:[ {userid:"1003"} ,{likenum:{$lt:1000} }]})
14.常用命令总结
选择切换数据库:use articledb
插入数据:db.comment.insert({bson数据})
查询所有数据:db.comment.find();
条件查询数据:db.comment.find({ 条件})
查询符合条件的第一条记录:db.comment.findOne({条件})
查询符合条件的前几条记录:db.comment.find({ 条件}).limit(条数)
查询符合条件的跳过的记录:db.comment.find({ 条件}).skip(条数)
修改数据:db.comment.update({ 条件},{ 修改后的数据}) 或db.comment.update({ 条件},{$set:{ 要修改部分的字段:数据})
修改数据并自增某字段值:db.comment.update({ 条件},{$inc:{ 自增的字段:步进值}})
删除数据:db.comment.remove({ 条件})
统计查询:db.comment.count({ 条件})
模糊查询:db.comment.find({ 字段名:/正则表达式/})
条件比较运算:db.comment.find({ 字段名:{$gt:值}})
包含查询:db.comment.find({ 字段名:{$in:[值1,值2]}})或db.comment.find({ 字段名:{$nin:[值1,值2]}})
条件连接查询:db.comment.find({$and:[{ 条件1},{ 条件2}]})或db.comment.find({$or:[{ 条件1},{ 条件2}]})
15.索引Index
16.索引的操作
db.collection.getIndexes() 查看索引
db.collection.dropIndex(index) 索引的移除可以通过名称,或者指定规则删,如果不加index表示删除所有,其中_id是不允许删掉的
举例:db.comment.dropIndex({userid:1})
16.索引的使用
执行计划:来查看查询的情况,如果查询耗时的时间是否基于索引查询等
语法:db.collection.find(query,options).explain(options)
举例:
db.comment.find({userid:"1003"}).explain()
未加索引前:
加索引后:
涵盖查询:
边栏推荐
猜你喜欢
Live server usage
Live-Server使用
SAP HR 劳动合同信息 0016
List. How to achieve ascending and descending sort() 2020.8.6
Vulnerability recurrence ----- 49. Apache airflow authentication bypass (cve-2020-17526)
C inheritance and interface design polymorphism
ROS2专题(03):ROS1和ROS2的区别【01】
2021icpc Shanghai h.life is a game Kruskal reconstruction tree
ESP at installation esp8266 and esp32 versions
SAP HR 社会工作经历 0023
随机推荐
B_ QuRT_ User_ Guide(38)
Unity3d learning notes 5 - create sub mesh
UE4_ Use of ue5 blueprint command node (turn on / off screen response log publish full screen display)
Flash encryption process and implementation of esp32
B_QuRT_User_Guide(40)
C simple question one
B_QuRT_User_Guide(36)
伸展树(一) - 图文解析与C语言实现
B_ QuRT_ User_ Guide(36)
LM12丨Rolling Heikin Ashi二重K线滤波器
Design and implementation of spark offline development framework
RE1 attack and defense world reverse
Count the top 10 films at the box office and save them in another file
Explain
LeeCode -- 6. Z 字形变换
648. Word replacement
给出一个数组,如 [7864, 284, 347, 7732, 8498],现在需要将数组中的数字拼接起来,返回「最大的可能拼出的数字」
Solution of intelligent supply chain collaboration platform in electronic equipment industry: solve inefficiency and enable digital upgrading of industry
Have all the fresh students of 2022 found jobs? Is it OK to be we media?
LeeCode -- 6. Zigzag transformation