启动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数据库启动及相关操作相关推荐

  1. Linux虚拟机的启动及相关命令

    Linux虚拟机的启动及相关命令 1.Linux是什么?作为一名初学者,我之前也简单的认为它是一个类似Windows的操作系统,但后来经过进一步学习,才知道,Linux是内核,Linux内核加上GUN ...

  2. 关于Linux中的apt-get的相关操作及原理

    关于Linux中的apt-get的相关操作及原理 Linux下的apt-get指令与相关文件夹 apt-get是linux下的一种简便的安装和更新软件的方法,在装软件的时候常用的命令就是 sudo a ...

  3. Linux基础命令及用户相关操作

    Linux基础命令及用户相关操作 基础命令 在根下边创建目录log: 查询以.log结尾的文件,将他们复制到创建好的目录中: 查看目录确认复制成功: 用gzip的方式对其进行压缩: 到根下查看,存在压 ...

  4. linux下数据库启动和停止

    具体步骤: 1.到数据库下:sqlplus /nolog conn as sysdba 以管理元身份登录: ===== 2.关闭数据库:shutdown immediate 3.启动数据库:start ...

  5. Linux下oracle数据库启动和关闭操作

    第一步:登陆 root登陆之后切换到oracle用户上,输入 su oracle 第二步:连接 在oracle用户下,输入 sqlplus /nolog 第三步:使用管理员权限 输入 connect ...

  6. VM虚拟机Linux克隆后网卡的相关操作

    ifconfig eth1   确定新网卡的MAC地址. nmcli con 确定新网卡的UUID vim /etc/udev/rules.d/70-persistent-net.rules 把原et ...

  7. 自然科学数据库-pandas的相关操作

    一.pandas 1.什么是pandas? pandas 是基于NumPy 的一种工具,该工具是为解决数据分析任务而创建的.Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所 ...

  8. redis在服务器linux下的启动的相关命令(安装和配置)

    1.在redis官网下载安装包 2.将安装包上传到FianlShell 3.建好对应文件路径,切换至安装包所在文件夹下 输入命令:(里面的路径根据实际情况进行改变) tar -zvxf redis-6 ...

  9. Docker安装mongo数据库,navicat联接操作mongo

    一.MongoDB安装 1.查看mongo镜像版本 docker search mongo 选择第一个mongo 2.获取最新版MongoDB镜像 docker pull mogo:latest 3. ...

最新文章

  1. 专访SIGDIAL2020最佳论文一作高信龙一:成功都是一步步走出来的
  2. 北斗导航 | 读取ground truth data(python源代码)
  3. c语言编写经验逐步积累3
  4. GitHub--创建新的分支
  5. ubuntu16.04打开软件或终端的窗口自动在左上角
  6. html中两个标签上对齐,css将两个元素水平对齐的方法(兼容IE8)
  7. matlab find
  8. 树莓派摄像头 C++ OpenCV YoloV3 实现实时目标检测
  9. python精通时间_学Python需要多久能学会?精通Python需要多长时间?
  10. (转)Spring Boot(十七):使用 Spring Boot 上传文件
  11. 为什么不早一点告诉我?——情场篇
  12. c语言用graphics画直线 带箭头直线_动漫人体比例怎么画?教你画出萌系少女!...
  13. pycharm debug 单步调试太卡太慢解决方案
  14. 如何下载mysql-java驱动jar包
  15. CS61A第一章笔记
  16. oracle优化技巧
  17. 计算机怎么快速匹配,四种方法教您如何在Excel中快速查找重复数据
  18. 附近的人实现原理详细剖析!
  19. 三种方法,让WPF项目生成单文件
  20. 网络准入控制 — 保护网络安全

热门文章

  1. P8294 [省选联考 2022] 最大权独立集问题
  2. Eclipse汉化教程以及问题解决
  3. [数据结构与算法综合实验]二叉树与哈夫曼图片压缩
  4. 在虚拟机上安装Kali Linux 的教程详解(超级详细,看了此教程便一通百通)!
  5. 全志V853的SDK从下载到编译到烧录
  6. 《那些对传智播客的恶意攻击》第一篇:穿越神人zuoyi3748
  7. 本人对12306系统优化的一点建议
  8. 2023-02-20干活小计:
  9. JS输入中文自动获取拼音首字母大写
  10. 2023年中国信创产业研究报告