简介
定义
MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统(非关系型数据库)
MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组
特点
- MongoDB 是一个面向文档存储的数据库,操作起来比较简单和容易
- Mongo支持丰富的查询表达式。查询指令使用JSON形式的标记,可轻易查询文档中内嵌的对象及数组
- MongoDb 使用update()命令可以实现替换完成的文档(数据)或者一些指定的数据字段
- Mongodb中的Map/reduce主要是用来对数据进行批量处理和聚合操作
- Map和Reduce。Map函数调用emit(key,value)遍历集合中所有的记录,将key与value传给Reduce函数进行处理
- Map函数和Reduce函数是使用Javascript编写的,并可以通过db.runCommand或mapreduce命令来执行MapReduce操作
- MongoDB允许在服务端执行脚本,可以用Javascript编写某个函数,直接在服务端执行,也可以把函数的定义存储在服务端,下次直接调用即可
- MongoDB支持各种编程语言:RUBY,PYTHON,JAVA,C++,PHP,C#等多种语言
概念解析
数据库
一个mongodb中可以建立多个数据库
"show dbs" 命令可以显示所有数据的列表
$ ./mongo
MongoDB shell version: 3.0.6
connecting to: test
> show dbs
local 0.078GB
test 0.078GB
执行 “db” 命令可以显示当前数据库对象或集合
$ ./mongo
MongoDB shell version: 3.0.6
connecting to: test
> db
test
运行use命令,可以连接到一个指定的数据库
> use local
switched to db local
> db
local
文档
MongoDB 的文档不需要设置相同的字段,并且相同的字段不需要相同的数据类型,这与关系型数据库有很大的区别,也是 MongoDB 非常突出的特点
- 文档中的键/值对是有序的。
- 文档中的值不仅可以是在双引号里面的字符串,还可以是其他几种数据类型(甚至可以是整个嵌入的文档)。
- MongoDB区分类型和大小写。
- MongoDB的文档不能有重复的键。
- 文档的键是字符串。除了少数例外情况,键可以使用任意UTF-8字符
集合
集合存在于数据库中,集合没有固定的结构,这意味着你在对集合可以插入不同格式和类型的数据,但通常情况下我们插入集合的数据都会有一定的关联性。
比如,我们可以将以下不同数据结构的文档插入到集合中
{"site":"www.baidu.com"}
{"site":"www.google.com","name":"Google"}
{"site":"www.runoob.com","name":"菜鸟教程","num":5}
操作
了解了MangoDB的基本概念,剩下就是最常见的增删该查等具体的操作,可参考菜鸟教程:
https://www.runoob.com/mongodb/mongodb-sort.html