linux mongo数据库启动及相关操作
启动mongodb服务
首先需要建立一个文件夹,用来存放mongodb产生的数据库文件。
为了便于管理,我们将该文件夹放在mongodb安装目录下,即和bin目录平级。
mkdir /usr/local/mongodb/data
#其中/usr/local/mongodb 为本人的安装目录
在我们启动mongo后会产生数据文件和日志文件,为了便于区分和管理,我们在data目录下再分别建立两个文件夹
mkdir /usr/local/mongodb/data/db
#用来存储数据文件
mkdir /usr/local/mongodb/data/log
#用来存储日志文件
接下里我们就可以启动mongodb服务了
mongod -dbpath=/usr/local/mongodb/data/db -logpath=/usr/local/mongodb/data/log/mongodb.log
#其中dbpath表示数据文件存储路径
#logpath表示日志文件存储路径
我们会看到在终端上产生类似于这样的打印信息
因为我们启用了日志,所以更细节的过程会在日志文件中产生
日志文件中
此时这个终端代表了服务器,无法进行输入了,也不能关闭。想要操作客户端就得新打开一个终端
启动mongo客户端
重新打开一个终端,输入
mongo 启动客户端
当出现这个箭头的时候就表明mongo客户端已经启动了。
退出mongo客户端
如果想要退出客户端,输入exit
关闭mongo服务
由于打开mongo服务的那个终端输入字符也没用了,所以我们就在客户端的那个终端中来关闭服务端。
mongod -shutdown -dbpath=/usr/local/mongodb/data/db
其他注意事项
在启动mongo服务时,如果不显示指定路径,则mongo会去根目录下寻找data/db,如果没有找到,会报错。
所以我们也可以直接在根目录下建立/data/db文件夹,我们也不要在用-dbpath=xxx这个参数了。但是会有权限的问题,所以我们还是在mongo安装目录下建立数据文件存储路径,而且名字也可以随自己更改了。
如果觉得每次启动mngo服务的时候需要指定dbpath和logpath太烦了,可以在data文件下建立2个shell脚本文件,一个启动,一个关闭。把命令存到脚本文件里面,以后只需要执行这个脚本文件就行了。别忘了修改脚本文件的权限。
以下内容参考菜鸟教程|mongo
数据库结构
SQL | MongoDB | 说明 |
database | database | 数据库 |
table | collection | 数据表/集合 |
row | document | 记录/文档 |
column | field | 字段/域 |
在mongo数据库,一个mongo服务可以有多个数据库,一个数据库可以有多个集合,一个集合由多个文档构成,一个文档由多个域构成
数据库相关操作
创建/转换数据库
> use stu #如果没有则自动创建stu数据库
注意mongodb会自动创建4个数据库,admin,config,local,test。这四张表默认存在。stu是我们自己添加的
查看所有数据库
> show dbs #如果创建的数据库中没有集合则不会显示
删除数据库
> use test #选定数据库
> db.dropDatabase()
显示当前数据库
> db
创建集合
> db.createCollection(name,option) #语法格式,option为参数,可选
> db.createCollection("stu") #不带参数
> db.createCollection("stu",{capped:true,autoINdexID:true,size:100000,max:10000}) #带参数
参数说明:
capped | 布尔 | 如果为true,则创建固定集合。固定集合是指有固定大小的集合,当达到最大值时,它会自动覆盖最早的文档。当该值为true时,必须指定size参数 |
autoIndId | 布尔 | 如果为true,则自动在_id字段创建索引。默认为false |
size | 数值 | 为固定集合指定一个最大值(以字节记) |
max | 数值 | 指定固定集合中包含文档的最大数量 |
显示当前数据库的集合
> show collections
#或者
> show tables
删除集合
> db.stu.drop()
插入文档
> db.stu.insert({ name:"zzzz",color:"red"
})
#stu为集合,如果我们没有先创建stu集合,则mongo会自动创建
#也可以使用变量来实现插入
>document = ({name:"zzzz",color:"red"
})
> db.stu.insert(document)
显示文档
> db.fruit.find() #fruit为集合
更新文档
insert方法
语法格式
db.collection.update(<query>,<update>,{upsert: <boolean>,multi: <boolean>,writeConcern: <document>}
)
参数解析:
query:需要更新的值
update:更新的操作
upsert:可选参数。如果<query>的值找不到,是否插入新的值。默认为false,不插入
multi:可选参数。默认为false,表示只更新第一条数据。true,表示更新所有匹配的数据
writeConcern:可选参数,抛出异常的级别
例子:
> db.stu.update({"fruit":"apple"},{$set:{"fruit":"banana"}})
#不含参数
#将"fruit":"apple"换成"fruit":"banana"
> db.stu.update({"fruit":"apple"},{$set:{"fruit":"banana"}},{multi:true})
#更新所有匹配文档
save方法
语法格式
db.stu.save(<document>,{writeConcern: <document>}
)
参数解析:
document:文档数据
writeConcern:可选,抛出异常级别
例子:
db.stu.save( {"_id":ObjectId("5b9872860191a2342033047b"),"fruit":"watermolen","color":"red",quality:'8kg'
})
删除文档
remove的方法
> db.stu.remove({"fruit":"watermolen"}) #删除所有符合条件的文档
> db.stu.remove({"fruit":"watermolen"},1) #删除第一条符合条件的文档
delete方法
> db.stu.deleteOne({fruit:'banana'}) #删除符合条件的第一个文档
> db.stu.deleteMany({fruit:'banana'}) #删除符合记录的所以文档
> db.stu.deleteMany() #删除符合记录的所有文档
查询文档
find结构
> db.stu.find(query, projection)
#query : 可选,查找的条件,无值表示查找全部
#projection :可选,表示在查找的结果中需要显示的值,0和1表示
> db.stu.find() #显示所有文档
> db.stu.find().pretty() #以结构化方式显示文档
> db.stu.find({"fruit":"red"}).pretty() #以结构化方式显示符合条件的文档
> db.stu.find({$or:[{fruit:'banana'},{fruit:'apple'}]}).pretty() #符合任意一个条件即可 or
> db.stu.find({fruit:'banana',color:'yellow'}).pretty() #符合全部条件 与
条件操作符
> db.stu.find({fruit:{$gt:'az'}},{_id:0})
#查询比'za'大的字符串,不显示_id
比较符说明
$gt --------- greater than >
$lt ---------- less than <
$gte ---------- gt equal >=
$lte --------- lt equal <=
$ne ---------- not equal !=
$eq ---------- equal =
模糊查询
> db.stu.find({fruit:/a/},{_id:0}) #查找包含a
> db.stu.find({fruit:/^a/},{_id:0}) #查找a开头
> db.stu.find({fruit:/a$/},{_id:0}) #查找a结尾
$type操作符
> db.stu.find({fruit:{$type:'string'}},{_id:0}) #查找类型为string
类型 | 数字 |
double | 1 |
string | 2 |
object | 3 |
array | 4 |
binary data | 5 |
undefined | 6 |
object id | 7 |
boolean | 8 |
date | 9 |
null | 10 |
regular expression | 11 |
javascript | 13 |
symbol | 14 |
javascript(with scope) | 15 |
32-bit integer | 16 |
timestamp | 17 |
64-bit integer | 18 |
min key | 255 |
max key | 127 |
limit和skip方法
> db.stu.find({},{_id:0}).limit(2) #显示前两条,不显示_id
> db.stu.find({},{_id:0}).skip(2) #跳过前两行再显示,不显示_id
混合用时,不论顺序,先执行skip(),再执行limit()
排序 sort
> db.stu.find({},{_id:0}).sort({color:1}) #color按照升序排列,不显示_id
> db.stu.find({},{_id:0}).sort({color:-1}) #color按照降序排列,不显示_id
当limit(),skip(),sort()三个一起混用时,不论排列顺序,先执行sort(),再执行skip(),最后执行limit()
索引
> db.stu.createIndex({'color':1}) #无参数,为color字段创建索引
> db.stu.createIndex({'color':1},{background :true}) #在后台创建索引
> db.stu.getIndexes() #查看当前索引
linux mongo数据库启动及相关操作相关推荐
- Linux虚拟机的启动及相关命令
Linux虚拟机的启动及相关命令 1.Linux是什么?作为一名初学者,我之前也简单的认为它是一个类似Windows的操作系统,但后来经过进一步学习,才知道,Linux是内核,Linux内核加上GUN ...
- 关于Linux中的apt-get的相关操作及原理
关于Linux中的apt-get的相关操作及原理 Linux下的apt-get指令与相关文件夹 apt-get是linux下的一种简便的安装和更新软件的方法,在装软件的时候常用的命令就是 sudo a ...
- Linux基础命令及用户相关操作
Linux基础命令及用户相关操作 基础命令 在根下边创建目录log: 查询以.log结尾的文件,将他们复制到创建好的目录中: 查看目录确认复制成功: 用gzip的方式对其进行压缩: 到根下查看,存在压 ...
- linux下数据库启动和停止
具体步骤: 1.到数据库下:sqlplus /nolog conn as sysdba 以管理元身份登录: ===== 2.关闭数据库:shutdown immediate 3.启动数据库:start ...
- Linux下oracle数据库启动和关闭操作
第一步:登陆 root登陆之后切换到oracle用户上,输入 su oracle 第二步:连接 在oracle用户下,输入 sqlplus /nolog 第三步:使用管理员权限 输入 connect ...
- VM虚拟机Linux克隆后网卡的相关操作
ifconfig eth1 确定新网卡的MAC地址. nmcli con 确定新网卡的UUID vim /etc/udev/rules.d/70-persistent-net.rules 把原et ...
- 自然科学数据库-pandas的相关操作
一.pandas 1.什么是pandas? pandas 是基于NumPy 的一种工具,该工具是为解决数据分析任务而创建的.Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所 ...
- redis在服务器linux下的启动的相关命令(安装和配置)
1.在redis官网下载安装包 2.将安装包上传到FianlShell 3.建好对应文件路径,切换至安装包所在文件夹下 输入命令:(里面的路径根据实际情况进行改变) tar -zvxf redis-6 ...
- Docker安装mongo数据库,navicat联接操作mongo
一.MongoDB安装 1.查看mongo镜像版本 docker search mongo 选择第一个mongo 2.获取最新版MongoDB镜像 docker pull mogo:latest 3. ...
最新文章
- 专访SIGDIAL2020最佳论文一作高信龙一:成功都是一步步走出来的
- 北斗导航 | 读取ground truth data(python源代码)
- c语言编写经验逐步积累3
- GitHub--创建新的分支
- ubuntu16.04打开软件或终端的窗口自动在左上角
- html中两个标签上对齐,css将两个元素水平对齐的方法(兼容IE8)
- matlab find
- 树莓派摄像头 C++ OpenCV YoloV3 实现实时目标检测
- python精通时间_学Python需要多久能学会?精通Python需要多长时间?
- (转)Spring Boot(十七):使用 Spring Boot 上传文件
- 为什么不早一点告诉我?——情场篇
- c语言用graphics画直线 带箭头直线_动漫人体比例怎么画?教你画出萌系少女!...
- pycharm debug 单步调试太卡太慢解决方案
- 如何下载mysql-java驱动jar包
- CS61A第一章笔记
- oracle优化技巧
- 计算机怎么快速匹配,四种方法教您如何在Excel中快速查找重复数据
- 附近的人实现原理详细剖析!
- 三种方法,让WPF项目生成单文件
- 网络准入控制 — 保护网络安全