MongoDB系列简介和安装部署

网友投稿 623 2022-05-29

文章目录

第一章MongoDB简介

第二章MongoDB安装

第三章MongoDB基本操作

第一章MongoDB简介

MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。

MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。

MongoDB 官网地址:https://www.mongodb.com/

MongoDB 官方英文文档:https://docs.mongodb.com/manual/

MongoDB 各平台-:https://www.mongodb.com/download-center#community

第二章MongoDB安装

###2.1 关闭SELINUX

vi /etc/selinux/config

1

对配置文件进行修改,然后按ESC键,:wq保存退出

#SELINUX=enforcing #SELINUXTYPE=targeted SELINUX=disabled #增加

1

2

3

4

5

:wq! #保存退出

###2.2 配置防火墙

vi /etc/sysconfig/iptables

1

可以看到配置文件,然后按I键,insert如下数据

-A INPUT -m state --state NEW -m tcp -p tcp --dport 9092 -j ACCEPT

1

然后按ESC键,:wq保存退出,配置文件代码如:

# Firewall configuration written by system-config-firewall # Manual customization of this file is not recommended. *filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [0:0] -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT -A INPUT -p icmp -j ACCEPT -A INPUT -i lo -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 9092 -j ACCEPT -A INPUT -j REJECT --reject-with icmp-host-prohibited -A FORWARD -j REJECT --reject-with icmp-host-prohibited COMMIT

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

:wq保存退出

###2.3 下载安装Mongodb

cd进入/usr/local/src

cd /usr/local/src

1

wget下载

wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-2.6.0.tgz

1

tar解压

tar zxvf mongodb-linux-x86_64-2.6.0.tgz

1

将解压文件移动到安装目录

mv mongodb-linux-x86_64-2.6.0 /usr/local/mongodb

1

MongoDB系列之简介和安装部署

创建mongodb存放路径

mkdir -p /usr/local/mongodb/data/

1

创建mongodb日志文件存放文件

mkdir /usr/local/mongodb/logs/mongodb.log

1

###2.4 启动mongodb

/usr/local/mongodb/bin/mongod --port 27017 --fork --dbpath=/usr/local/mongodb/data/ --logpath=/usr/local/mongodb/logs/mongodb.log --logappend&

1

检查

netstat -lanp | grep "27017"

1

进入mongodb数据库控制台

./mongo

1

设置mongodb全局

添加环境变量

vi /etc/profile

1

同样使用VI编辑器,加入如下配置

export PATH=$PATH:/usr/local/mongodb/bin

1

按ESC,然后:wq保存退出

使配置文件立即生效

source /etc/profile

1

然后就可以全局使用mongodb命令了

进入mongodb控制台

mongo #进入MongoDB控制台 show dbs #查看默认数据库 use admin #切换到admin数据库 exit #退出MongoDB控制台

1

2

3

4

5

6

7

第三章MongoDB基本操作

###3.1MongoDB连接

MongoDB连接,使用“username:password@hostname/dbname’”的形式进行连接。

连接本地数据库服务器,端口是默认的。

mongodb://localhost

1

###3.2创建数据库

MongoDB创建数据库语法

use DATABASE_NAME

1

demo:创建test数据库

use test

1

如果没有数据库,就创建数据库,否就连接到指定数据库

查看所有的数据库,使用

show dbs

1

不过这时我们使用show dbs的话,还是看不到我们创建的数据库,其实是需要我们向数据库里添加数据才可以看得到的

demo:向test数据库里插入一行数据

db.test.insert({"name":"test"})

1

###3.3创建数据库

MongoDB删除数据库语法

db.dropDatabase()

1

不过一般要先使用use连接数据库,然后再删除指导数据库

demo:删除test数据库

连接test数据库

use test

1

删除test数据库

db.dropDatabase()

1

删除集合

demo:删除test数据库的coll集合

> use test switched to db runoob > show tables coll > db.coll.drop() true > show tables >

1

2

3

4

5

6

7

8

###3.4插入文档

MongoDB插入文档语法大致如

db.COLLECTION_NAME.insert(document)

1

demo:向test数据库的col集合中插入文档

方法一

>use test >db.col.insert({title: 'MongoDB', description: 'MongoDB NOSQL', by: 'test', url: 'https:', tags: ['mongodb', 'database', 'NoSQL'], likes: 100 })

1

2

3

4

5

6

7

8

查看已经写入数据的col集合

db.col.find()

1

方法二

定义一个document对象

document=({title: 'MongoDB', description: 'MongoDB NOSQL', by: 'test', url: 'https:', tags: ['mongodb', 'database', 'NoSQL'], likes: 100 });

1

2

3

4

5

6

7

执行,将定义好的document对象写入数据

db.col.insert(document)

1

###3.5更新文档

更新文档操作语法大概如:

db.collection.update( , , { upsert: , multi: , writeConcern: } )

1

2

3

4

5

6

7

8

9

参数意义:

query : update的查询条件,类似sql update查询内where后面的。

update : update的对象和一些更新的操作符(如 , , ,inc…)等,也可以理解为sql update查询内set后面的

upsert : 可选,这个参数的意思是,如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。

multi : 可选,mongodb 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。

writeConcern :可选,抛出异常的级别。

demo:更新test数据库的文档

使用test数据库

use test

1

更新文档操作

db.col.update({'title':'MongoDB'},{$set:{'title':'MongoDB test'}})

1

然后查看文档是否更新

db.col.find()

1

修改多条相同的文档

上诉情况是修改一条文档的,若修改多条相同的文档,则需要设置 multi 参数为 true。

db.col.update({'title':'MongoDB'},{$set:{'title':'MongoDB test'}},{multi:true})

1

save()方法

语法大概如:

db.collection.save( , { writeConcern: } )

1

2

3

4

5

6

参数意义

document : 文档数据。

writeConcern :可选,抛出异常的级别。

demo:替换了 _id 为 56064f89ade2f21f36b03136 的文档数据

db.col.save({ "_id" : ObjectId("56064f89ade2f21f36b03136"), "title" : "MongoDB", "description": 'MongoDB NOSQL', "by": 'test', "url": 'https:', "tags": ['mongodb', 'database', 'NoSQL'], "likes": 100 })

1

2

3

4

5

6

7

8

9

只更新第一条记录: db.col.update( { "count" : { $gt : 1 } } , { $set : { "test2" : "OK"} } ); 全部更新: db.col.update( { "count" : { $gt : 3 } } , { $set : { "test2" : "OK"} },false,true ); 只添加第一条: db.col.update( { "count" : { $gt : 4 } } , { $set : { "test5" : "OK"} },true,false ); 全部添加加进去: db.col.update( { "count" : { $gt : 5 } } , { $set : { "test5" : "OK"} },true,true ); 全部更新: db.col.update( { "count" : { $gt : 15 } } , { $inc : { "count" : 1} },false,true ); 只更新第一条记录: db.col.update( { "count" : { $gt : 10 } } , { $inc : { "count" : 1} },false,false );

1

2

3

4

5

6

7

8

9

10

11

12

###3.6删除文档

MongoDB删除文档操作为

db.collection.remove( , )

1

2

3

4

MongoDB2.6以后版本的操作为

db.collection.remove( , { justOne: , writeConcern: } )

1

2

3

4

5

6

7

query :(可选)删除的文档的条件。

justOne : (可选)如果设为 true 或 1,则只删除一个文档。

writeConcern :(可选)抛出异常的级别。

demo:删除title为MongoDB的数据

db.col.remove({'title':'MongoDB'})

1

删除集合所有数据

db.col.remove({})

1

###3.7MongoDB查询

MongoDB查询语法

db.collection.find(query, projection)

1

query :可选,使用查询操作符指定查询条件

projection :可选,使用投影操作符指定返回的键。查询时返回文档中所有键值, 只需省略该参数即可(默认省略)。

易读方式查询

db.col.find().pretty()

1

除了 find() 方法之外,还有一个 findOne() 方法,它只返回一个文档。

###3.8MongoDB条件操作

MongoDB AND条件,可以传入多个键(key),每个键(key)以逗号隔开

db.col.find({key1:value1, key2:value2}).pretty()

1

MongoDB OR条件

db.col.find( { $or: [ {key1: value1}, {key2:value2} ] } ).pretty()

1

2

3

4

5

6

7

MongoDB AND和OR联合查询

AND 和 OR 联合使用,类似常规 SQL 语句为: ‘where likes>50 AND (by = ‘教程’ OR title = ‘MongoDB 教程’)’

MongoDB条件操作符

(>) 大于 : $gt

(<) 小于 : $lt

(>=) 大于等于 : $gte

(<= ) 小于等于 : $lte

Demo:

获取 “col” 集合中 “likes” 大于 100 的数据,可以使用以下命令:

db.col.find({"likes" : {$gt : 100}})

1

获取"col"集合中 “likes” 大于等于 100 的数据,可以使用以下命令

db.col.find({likes : {$gte : 100}})

1

获取"col"集合中 “likes” 小于 150 的数据,可以使用以下命令:

db.col.find({likes : {$lt : 150}})

1

获取"col"集合中 “likes” 小于等于 150 的数据,可以使用以下命令:

db.col.find({likes : {$lte : 150}})

1

获取"col"集合中 “likes” 大于100,小于 200 的数据,可以使用以下命令:

db.col.find({likes : {$lt :200, $gt : 100}})

1

MongoDB Limit和Skip操作符

Limit操作符,Number表示读取的记录数

db.COLLECTION_NAME.find().limit(NUMBER)

1

MongoDB skip()方法

Number表示要跳过的记录数,默认从0开始

db.COLLECTION_NAME.find().limit(NUMBER).skip(NUMBER)

1

###3.9MongoDB $type操作符

MongoDB $type操作符表

获取 “col” 集合中 title 为 String 的数据,可以使用以下命令:

db.col.find({"title" : {$type : 2}})

1

###3.10MongoDB排序

使用sort()方法对数据进行排序,sort()方法可以通过参数指定排序的字段,并使用 1 和 -1 来指定排序的方式,其中 1 为升序排列,而-1是用于降序排列。

这是对集合进行排序的

db.COLLECTION_NAME.find().sort({KEY:1})

1

###3.11MongoDB索引

索引是特殊的数据结构,索引存储在一个易于遍历读取的数据集合中,索引是对数据库表中一列或多列的值进行排序的一种结构。建立索引可以提高查询速度。如果没有索引,MongoDB在读取数据时必须扫描集合中的每个文件并选取那些符合查询条件的记录。

demo:查询col集合,“title”为索引字段,1为指定按升序创建索引,如果你想按降序来创建索引指定为-1即可。

db.col.ensureIndex({"title":1})

1

在后台创建索引

db.values.ensureIndex({open: 1, close: 1}, {background: true})

1

###3.12MongoDB聚合

MongoDB中聚合(aggregate)主要用于处理数据(诸如统计平均值,求和等),并返回计算后的数据结果。有点类似sql语句中的 count(*)。

基本语法如:

db.COLLECTION_NAME.aggregate(AGGREGATE_OPERATION)

1

db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$sum : 1}}}])

1

以上实例类似sql语句:

select by_user, count(*) from mycol group by by_user

###附录

Mongodb Java demo

附录demo:

去http://mongodb.github.io/mongo-java-driver/下载相应的jar,放在libs文件夹里

pom配置

org.bson bson 3.4.2 system ${basedir}/src/main/webapp/WEB-INF/lib/bson-3.4.2.jar org.mongodb mongodb-driver 3.4.2 system ${basedir}/src/main/webapp/WEB-INF/lib/mongodb-driver-3.4.2.jar org.mongodb mongodb-driver-core 3.4.2 system ${basedir}/src/main/webapp/WEB-INF/lib/mongodb-driver-core-3.4.2.jar

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

import com.mongodb.MongoClient; import com.mongodb.client.MongoDatabase; public class MongoDBJDBC{ public static void main( String args[] ){ try{ // 连接到 mongodb 服务 MongoClient mongoClient = new MongoClient( "10.10.1.1" , 27017 ); // 连接到数据库 MongoDatabase mongoDatabase = mongoClient.getDatabase("test"); System.out.println("Connect to database successfully"); mongoDatabase.createCollection("colll"); System.out.println("集合创建成功"); }catch(Exception e){ System.err.println( e.getClass().getName() + ": " + e.getMessage() ); } } }

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

MongoDB 数据库

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Dede&nbsp;删除文档同时文章中的图片的方法
下一篇:慢日志新体验!华为云DDS慢日志明文显示,一键保障敏感信息安全
相关文章