mongodb基本常用命令(简单介绍及应用看这里)
mongodb基本常用命令(简单介绍及应用看这里)数据被分组存储在数据集中, 被称为一个集合(Collenction)。每个集合在数据库中都有一个唯一的标识名,并且可以包含无限数目的文档。集合的概念类似关系型数据库(RDBMS)里的表(table),不同的是它不需要定义任何模式(schema)。1.面向集合(Collenction-Orented)MongoDB 最大的特点是他支持的查询语言非常强大,其语法类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引,包含 JSON 文档模型、动态的数据模式、二级索引、动态查询、全文搜索 、聚合框架、MapReduce、GridFS、地理位置索引、内存引擎 、地理分布等一系列的强大功能。当然其缺点是不支持事物操作,对于多表的联合查询也仅仅支持Left outer Join。但依旧无法阻挡MongoDB成为当前非常热门的NoSQL数据库产品。二、Mon
近几年随着大数据的兴起,非关系性数据库(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
下载完安装包,并解压 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的版本等信息。
图2
MongoDB 的一些简单命令:
user test; (默认使用本地test库)
show dbs; (显示所有库)
db.createCollection('user'); (创建集合user)
图3
use user;(当前自创建的名为user的集合)
db.user.insert({'id':'1' 'name':'wangkaka' 'age':'30' 'sex':'1'});
图4
db.user.find();(查询当前自创建的名为user的集合的全部内容 '_id'为mongo自动生成的 一个包含了时间的唯一标识字段)
图5
db.user.drop();(会删除集合 如果成功删除选定集合,返回 true,否则返回 false)
图6
db.user.remove({'id':'3'});(删除集合中id为3的数据,不带参数会删除集合中所有的数据)
图7
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'}});
图8
如果需要修改多条,除了设置multi参数外,也可以使用updateMany()方法 updateMany()方法在linux命令下可能识别不了,但用MongoDB的一些可视化工具是可以的。
实例:db.user.update({'sex':'1'} {$set:{'age':'30'}} {multi:true});
图9
save() 方法通过传入的文档来替换已有文档。语法格式如下:
db.collection.save(<document> {writeConcern:<document>});
实例:
db.user.save({'id':'2' 'name':'lili' 'age':'24' 'sex':'0'});
图10
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})
图11
如果你需要在MongoDB中读取指定数量的数据记录,可以使用MongoDB的Limit方法,limit()方法接受一个数字参数。例: db.user.find().limit(2)。
图12
skip()方法来跳过指定数量的数据,skip方法同样接受一个数字参数作为跳过的记录条数。
db.user.find().limit(1).skip(1);(只会显示第二条文档数据)
图13
skip()、limilt()、sort()三个放在一起执行的时候,执行的顺序是先 sort() 然后是 skip(),最后是limit()。
MongoDB的条件操作符用于比较两个表达式并从mongoDB集合中获取数据。常用的操作符有:
$gt 大于 $gte 大于等于
$lt 小于 $lte 小于等于
$ne 不等于 $eq 等于
以上为MongoDB的简单使用和介绍,更多使用操作请参考MongoDB官方文档。目前也有很多MongoDB的可视化操作工具(例如:NoSQLBooster fro MongoDB),可以更好更简便的来使用MongoDB!