1、简介
MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的,语法有点类似javascript面向对象的查询语言,它是一个面向集合的,模式自由的文档型数据库。
MongoDB 2.4中新引入了V8引擎, V8 是 Google 发布的开源 JavaScript 引擎,采用 C++ 编写,在 Google 的 Chrome 浏览器中被使用。V8 引擎可以独立运行,也可以用来嵌入到 C++ 应用程序中执行。
2、mongodb与 mysql性能比较
分别插入100万条记录,并对其做100个用户并发查询操作
3、应用范围和限制
缺点:不支持连表查询,不支持sql语句,不支持事务存储过程等,所以不适合存储数据间关系比较复杂的数据,一般主要是当做一个数据仓库来使用。
适用于:日志系统,股票数据等。
不使用于:电子商务系统等需要连多表查询的功能。
1、文档
文档是mongoDB中数据的基本单元,类似关系数据库的行, 多个键值对有序地放置在一起便是文档。
MongoDB 中以文档的方式存取记录,如一条记录格式如下:
{"username":"Tom", "age":10 ,"sex":"男"}
{ "username":"Tom" , "age" : "10" }
{"Username":"Tom", "age":10}
注意:
(1)以上是三个不同的文档,MongoDB区分大小写的数据类型,第一个age字段是数字类型,第二个age是字符串类型。
(2)每一个文档尺寸不能超过16M
2、集合
集合就是一组文档,多个文档组成一个集合,集合类似于 mysql里面的表。
无模式是指,在同一个集合中可以包含不同格式的文档,如:
{ "Name" : "Mongodb" , "Type" : "Nosql" }
{ "UserName" : "Tom" , "age" : 20 , "Gender" : "male" }
以上两个文档可以放在同一个集合中。
在Mysql需要先建表再插入数据,
模式自由(schema-free):意思是集合里面没有行和列的概念,
注意:MongoDB中的集合不用创建、没有结构,所以可以放不同格式的文档。
3、数据库
多个集合可以组成数据库。一个mongoDB实例可以承载多个数据库,他们之间完全独立。
Mongodb中的数据库和Mysql中的数据库概念类似,只是无需创建。
一个数据库中可以有多个集合。
一个集合中可以有多个文档。
4、mongodb的数据体系
(1) Linux服务器的mongodb安装
第一步:下载软件,可以到官方网站上下载,将软件下载到本地后直接上传到服务器
也可以直接在服务器上执行:Wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel62-3.2.9.tgz,直接下载
mongodb压缩包,针对的是Linux服务器哦!
第二步:解压并进入目录
第三步:创建安装目录
第四步:移除bin目录到安装目录下
解压目录及里面的文件可删除
2、启动软件
(1) Linux服务器的mongodb启动
第一步:进入安装目录,可以查看到以下文件
mongod 服务端执行文件
mongo 客户端软件
mongoexport 导出数据
mongoimport 导入数据
mongodump 备份
mongorestore 恢复
第二步:查看帮助文档
执行 mongod --help
--logpath 指定日志文件的目录和名字(此目录必须先手工创建)
--logRotate rename 重命名新日志文件
--fork 以服务进程的方式运行(运行在后台)
--dbpath 指定数据的存储目录(此目录必须先手工创建)
第三步:创建日志目录和数据目录
第四步:启动
./bin/mongod --fork --logpath /usr/local/mongodb/log/log.txt --logRotate rename --dbpath /usr/local/mongodb/data
可以通过netstat -tpln 来查看是否启动成功
4、停止mongodb服务
Linux下可直接执行pkill mongod
1、查看数据库
语法:show dbs
2、创建数据库
语法:use 数据库名称
3、查看当前数据库
语法:db
4、创建集合(数据表)
无须创建集合,当往集合里面添加数据时,集合就自动生成
这里的db是系统的关键词,它指向了当前数据库。类似于JS里面的this
5、查看集合
语法 show tables 或者 show collections
6、删除集合
语法 db.集合名.drop()
8、查看帮助
(1)全局级别的帮助指令
Help
(2)数据库级别的帮助指令
db.help();
(3)数据表级别的帮助指令
db.集合名.help()