freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

MongoDB如何快速入门?简单介绍及应用看这里!
2018-12-14 11:35:24

近几年随着大数据的兴起,非关系性数据库(NoSQL)越来越成为数据库解决方案的主流,MongoDB便是当前最热门的NoSQL 数据库产品之一。MongoDB是一个高性能、开源、无模式的文档型数据库,它由 C++ 语言编写,支持C++、Java、PHP、Python、Ruby、C#等多种编程语言。

本期安仔课堂,ISEC实验室的王老师为大家进行MongoDB的简单介绍及应用,带你快速入门!

一、关于MongoDB

MongoDB 采用的是NoSQL的设计方式,是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富、最像关系数据库的。它是一个面向集合的、模式自由的文档型数据库。

MongoDB 最大的特点是他支持的查询语言非常强大,其语法类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引,包含 JSON 文档模型、动态的数据模式、二级索引、动态查询、全文搜索 、聚合框架、MapReduce、GridFS、地理位置索引、内存引擎 、地理分布等一系列的强大功能。

当然其缺点是不支持事物操作,对于多表的联合查询也仅仅支持Left outer Join。但依旧无法阻挡MongoDB成为当前非常热门的NoSQL数据库产品。

二、MongoDB使用原理

1.面向集合(Collenction-Orented)

数据被分组存储在数据集中, 被称为一个集合(Collenction)。每个集合在数据库中都有一个唯一的标识名,并且可以包含无限数目的文档。集合的概念类似关系型数据库(RDBMS)里的表(table),不同的是它不需要定义任何模式(schema)。

2.模式自由(Schema-free)

对于存储在 MongoDB 数据库中的文件,我们不需要知道它的任何结构定义。

那么“无模式”或“模式自由”是什么概念呢?例如,下面两个记录可以存在于同一个集合里:

{‘name’ :‘wangkaka’}

{‘age’ :‘30’}

3.文档型

存储的数据是键(key)/值(value)对的集合,键是字符串,值是数据类型集合里的任意类型,包括数组和文档。

三、MongDB的下载安装、应用

以Linux环境下为例

下载地址:

图1.jpg

图1

按本地服务器的配置下载对应版本。

图2.jpg

图2

下载完安装包,并解压 tgz。

下载完并解压:tar –zxvf mongodb-linux-x86.tgz 

mv mongo-linux-x86   /usr/local/mongodb

(拷贝到你本地指定目录下)

MongoDB 的可执行文件位于 bin 目录下,所以可将其添加到 PATH 路径中:

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

创建数据库目录

MongoDB的数据存储在data目录的db目录下,但是这个目录在安装过程不会自动创建,需要手动创建data目录,并在data目录中创建db目录。

以下实例中我们将data目录创建于根目录下(/)。

注意:/data/db 是 MongoDB 默认启动的数据库路径(--dbpath)。

命令行中运行 MongoDB 服务

你可以在命令行中执行mongo安装目录中的bin目录执行mongod命令来启动mongdb服务

./mongod:

以上安装成功启动服务之后,即可正式开始使用MongoDB了。

一般可以在linux下,直接输入:mongo localhost:mongodb端口号,回车后,会显示当前MongoDB的版本等信息。

图3.jpg

图3

MongoDB 的一些简单命令:

user test;  (默认使用本地test库)

show dbs; (显示所有库)

db.createCollection(‘user’); (创建集合user)

图4.jpg

图4

use user;(当前自创建的名为user的集合)

db.user.insert({‘id’:‘1’,‘name’:‘wangkaka’,‘age’:‘30’,‘sex’:‘1’});

image.png

图5

db.user.find();(查询当前自创建的名为user的集合的全部内容,‘_id’为mongo自动生成的 一个包含了时间的唯一标识字段)

image.png

图6

db.user.drop();(会删除集合,如果成功删除选定集合,返回 true,否则返回 false)

image.png

图7

db.user.remove({‘id’:‘3’});(删除集合中id为3的数据,不带参数会删除集合中所有的数据)

image.png

图8

MongoDB 使用 update() 和 save() 方法来更新集合中的文档。

update() 方法用于更新已存在的文档。语法格式如下:

db.collection.update(<query>,<update>,{upsert:<boolean>,multi:<boolean>,writeConcern:<document>})。

参数说明:

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

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

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

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

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

例如:将id为1的此记录中age字段的值更改为29。

db.user.update({‘id’:‘1’},{$set:{‘age’:‘29’}});

image.png

图9

如果需要修改多条,除了设置multi参数外,也可以使用updateMany()方法,updateMany()方法在linux命令下可能识别不了,但用MongoDB的一些可视化工具是可以的。

实例:db.user.update({‘sex’:‘1’},{$set:{‘age’:‘30’}},{multi:true});

image.png

图10

save() 方法通过传入的文档来替换已有文档。语法格式如下:

db.collection.save(<document>,{writeConcern:<document>});

实例:

db.user.save({‘id’:‘2’,‘name’:‘lili’,‘age’:‘24’,‘sex’:‘0’});

image.png

图11

MongoDB中删除集合中的记录除了上面提到的remove()方法外,也可以使用delete(),多条用deleteMany(),格式相同。

MongoDB sort() 方法:

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

sort()方法基本语法如下所示:

db.collection.find().sort({key:1})。

例如:将user集合按id 的升序排列

db.user.find().sort({‘id’:1})

image.png

图12

如果你需要在MongoDB中读取指定数量的数据记录,可以使用MongoDB的Limit方法,limit()方法接受一个数字参数。例: db.user.find().limit(2)。

image.png

图13

skip()方法来跳过指定数量的数据,skip方法同样接受一个数字参数作为跳过的记录条数。

db.user.find().limit(1).skip(1);(只会显示第二条文档数据)

image.png

图14

skip()、limilt()、sort()三个放在一起执行的时候,执行的顺序是先 sort(), 然后是 skip(),最后是limit()。

MongoDB的条件操作符用于比较两个表达式并从mongoDB集合中获取数据。常用的操作符有:

$gt 大于    $gte 大于等于

$lt 小于    $lte 小于等于

$ne 不等于    $eq 等于

以上为MongoDB的简单使用和介绍,更多使用操作请参考MongoDB官方文档。目前也有很多MongoDB的可视化操作工具(例如:NoSQLBooster fro MongoDB),可以更好更简便的来使用MongoDB!

安胜作为国内领先的网络安全产品及服务提供商,秉承“创新为安,服务致胜”的经营理念,专注于网络安全类产品的生产与服务;以“研发+服务+销售”的经营模式,“装备+平台+服务”的产品体系,在技术研究、研发创新、产品化等方面已形成一套完整的流程化体系,为广大用户提供量体裁衣的综合解决方案!

我们拥有独立的技术及产品的预研基地—ISEC实验室,专注于网络安全前沿技术研究,提供网络安全培训、应急响应、安全检测等服务。此外,实验室打造独家资讯交流分享平台—“ISEC安全e站”,提供原创技术文章、网络安全信息资讯、实时热点独家解析等。

2018年

承担全国两会网络安保工作;

承担青岛上合峰会网络安保工作。

2017年

承担全国两会网络安保工作;

承担金砖“厦门会晤”网络安保工作;

承担北京“一带一路”国际合作高峰论坛网络安保工作;

承担中国共产党第十九次全国代表大会网络安保工作;

承担第四届世界互联网大会网络安保工作。

2016年

承担全国两会网络安保工作;

为贵阳大数据与网络安全攻防演练提供技术支持;

承担G20峰会网络安保工作;

承担第三届世界互联网大会网络安保工作。

2015年

承担第二届世界互联网大会网络安保工作。

不忘初心、砥砺前行;未来,我们将继续坚守、不懈追求,为国家网络安全事业保驾护航!

本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者