Linux安装MongoDB及简单命令

1.MongoDB简介

MongoDB是一个基于分布式文件存储的文档数据库,介于关系数据库和非关系数据库之间,是非关系数据库当中功能最丰富、最像关系数据库的一种NoSQL数据库。MongoDB支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。MongoDB最大的特点是支持的查询语言非常强大,语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。

2.安装MongoDB

MongoDB既可以安装在Windows系统下使用,也可以安装在Linux系统下使用,这里采用Linux系统。MongoDB安装很简单,无需下载源文件,可以直接用apt-get命令进行安装。

但是,需要说明的是,如果直接使用“sudo apt-get install mongodb”命令进行安装,默认安装的版本是MongoDB 2.6.10。由于目前MongoDB已经升级到4.0.16,这里将通过添加软件源的方式来安装4.0.16版本。

首先,在Linux系统中打开一个终端,执行如下命令导入公共秘钥到包管理器中(Hadoop密码为hadoop):

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 9DA31620334BD75D9DCB49F368818C72E52529D4

然后,创建MongoDB的文件列表,命令如下:

echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/4.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb.list

执行如下命令来更新包管理器:

sudo apt-get update
sudo apt-get install apt-transport-https
sudo apt-get update

最后,执行如下命令安装MongoDB:

sudo apt install mongodb-org
sudo apt install mongodb-server

......

安装完成后,在终端输入以下命令查看MongoDB版本:

mongo -version

如果能够输出版本信息,则表明安装成功。

安装成功以后,启动MongoDB的命令如下:

sudo service mongodb start

默认设置下,MongoDB是随Ubuntu启动而自动启动的。可以输入以下命令查看是否启动成功:

pgrep mongod -l   #注意:-l是英文字母l,不是阿拉伯数字1

3.使用Shell命令操作MongoDB

(1)进入MongoDB Shell模式

在Linux系统打开一个终端,输入如下命令启动MongoDB:

sudo service mongodb start

再输入如下命令进入MongoDB Shell模式:

mongo

进入MongoDB Shell模式以后,默认连接的数据库是test数据库,可以在命令提示符“>”后面输入各种Shell命令来操作MongoDB数据库。

(2)常用操作命令

如果要创建一个名称为“School”的数据库,需要先运行“use School”命令,之后做一些操作,比如,使用命令“db.createCollection('teacher')”创建集合,这样就可以创建一个名称为“School”的数据库。

show dbs
use School
db.createCollection('teacher')

执行上述命令过程的屏幕截图如下图所示。

(3)简单操作演示

下面以一个School数据库为例进行操作演示,将在School数据库中创建两个集合teacher和student,并对student集合中的数据进行增、删、改、查等基本操作。需要说明的是,文档数据库中的集合(Collection),相当于关系型数据库中的表(table)。

1)切换到School数据库

命令如下:

use School

注意,MongoDB无需预创建School数据库,在使用时会自动创建。

2)创建集合

创建集合(Collection)的命令如下:(重复创建会报错,如下所示)

db.createCollection('teacher')

实际上,MongoDB在插入数据的时候,也会自动创建对应的集合,无需预定义集合。

3)插入数据

与数据库创建类似,插入数据时也会自动创建集合。插入数据有两种方式:insert和save,具体命令如下:

db.student.insert({_id:1, sname: 'zhangsan', sage: 20})  #_id可选
db.student.save({_id:1, sname: 'zhangsan', sage: 22})  #_id可选

这两种方式,其插入的数据中_id字段均可不写,系统会自动生成一个唯一的_id来标识本条数据。insert和save二者的区别在于:在手动插入_id字段时,如果_id已经存在,insert不做操作,而save会做更新操作;如果不加_id字段,两者作用相同,都是插入数据。上述命令执行过程的屏幕截图如下图所示。

添加的数据的结构是松散的,只要是bson格式均可,列属性均不固定,以实际添加的数据为准。可以先定义数据再插入,这样就可以一次性插入多条数据,如下图所示。

s=[{sname:'list',sage:20},{sname:'wangwu',sage:20},{sname:'chenliu',sage:20}]
db.student.insert(s)
db.student.find()

运行完以上例子,student已自动创建,这也说明MongoDB不需要预先定义集合(collection),在第一次插入数据后,集合会被自动创建。此时,可以使用“show collections”命令查询数据中当前已经存在的集合,如下图所示。

show collections

4)查找数据

查找数据所使用的基本命令格式如下:(不用在mongodb shell里执行)

db.youCollection.find(criteria, filterDisplay)

其中,criteria表示查询条件,是一个可选的参数;filterDisplay表示筛选显示部分数据,如显示指定某些列的数据,这也是一个可选的参数,但是,需要注意的是,当存在该参数时,第一个参数不可省略,若查询条件为空,可用{}做占位符。

●查询所有记录

db.student.find()

该命令相当于关系数据库的SQL 语句“select * from student”。

●查询sname='list'的记录

db.student.find({sname: 'list'})

该命令相当于关系数据库的SQL 语句“select * from student where sname='list'”。

●查询指定列sname、sage数据

db.student.find({},{sname:1, sage:1})

该命令相当于关系数据库的SQL 语句“select sname,sage from student”。其中,sname:1表示返回sname列,默认_id字段也是返回的,可以添加_id:0(意为不返回_id),写成{sname: 1, sage: 1,_id:0},就不会返回默认的_id字段了。

●AND条件查询

db.student.find({sname: 'zhangsan', sage: 22})

该命令相当于关系数据库的SQL 语句“select * from student where sname = 'zhangsan' and sage = 22”。

●OR条件查询

db.student.find({$or: [{sage: 22}, {sage: 25}]})

该命令相当于关系数据库的SQL 语句“select * from student where sage = 22 or sage = 25”。

●格式化输出

对于查询结果,也可以采用pretty()进行格式化输出。

db.student.find().pretty()

5)修改数据

修改数据的基本命令格式如下:

db.youCollection.update(criteria, objNew, upsert, multi )

这里给出一个实例,语句如下:

db.student.update({sname: 'lisi'}, {$set: {sage: 30}}, false, true)

该命令相当于关系数据库的SQL 语句“update student set sage =30 where sname = 'list';”。

6)删除数据

db.student.remove({sname: 'chenliu'})

该命令相当于关系数据库的SQL 语句“delete from student where sname='chenliu'”。

执行该命令过程如下图所示。

7)删除集合

db.student.drop()

(4)退出MongoDB Shell模式

可以输入如下命令退出MongoDB Shell模式:

exit

或者也可以直接按键盘的Ctrl+C组合键,退出Shell命令模式。

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值