MongoDB术语或概念
database 数据库
MongoDB的单个实例可以容纳多个独立的数据库,每一个都有自己的集合和权限,不同的数据库也放置在不同的文件中
保留的特殊数据库:
admin: 从权限的角度来看,这是"root"数据库。要是将一个用户添加到这个数据库,这个用户自动继承所有数据库的权限,一些特定的服务器端命令也只能从这个数据库运行,比如列出所有的数据库或者关闭服务器
local: 这个数据永远不会被复制,可以用来存储限于本地单台服务器的任意集合
config: 当Mongo用于分片设置时,config数据库在内部使用,用于保存分片的相关信息
collection 集合
集合就是 MongoDB 文档组,集合存在于数据库中,集合没有固定的结构,但通常情况下我们插入集合的数据都会有一定的关联性
当第一个文档插入时,集合就会被自动创建
document 文档
文档是一组键值(key-value)对(即 BSON),MongoDB 的文档不需要设置相同的字段,并且相同的字段不需要相同的数据类型
field 字段
MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成,MongoDB 文档类似于 JSON 对象,字段值可以包含其他文档,数组及文档数组
index 索引
索引通常能够极大的提高查询的效率,索引是特殊的数据结构,索引存储在一个易于遍历读取的数据集合中,索引是对数据库表中一列或多列的值进行排序的一种结构
primary key 主键
MongoDB 中存储的文档必须有一个 _id 键,这个键的值可以是任何类型的,默认是个 ObjectId 对象
数据类型
String | 字符串,存储数据常用的数据类型,在 MongoDB 中,UTF-8 编码的字符串才是合法的 |
Integer | 整型数值,用于存储数值,根据你所采用的服务器,可分为 32 位或 64 位 |
Boolean | 布尔值,用于存储布尔值(真/假) |
Double | 双精度浮点值,用于存储浮点值 |
Min/Max keys | 将一个值与 BSON(二进制的 JSON)元素的最低值和最高值相对比 |
Array | 用于将数组或列表或多个值存储为一个键 |
Timestamp | 时间戳,记录文档修改或添加的具体时间 |
Object | 用于内嵌文档 |
Null | 用于创建空值 |
Symbol | 符号,该数据类型基本上等同于字符串类型,但不同的是,它一般用于采用特殊符号类型的语言 |
Date | 日期时间,用 UNIX 时间格式来存储当前日期或时间,你可以指定自己的日期时间:创建 Date 对象,传入年月日信息 |
Object ID | 对象 ID,用于创建文档的 ID |
Binary Data | 二进制数据,用于存储二进制数据 |
Code | 代码类型,用于在文档中存储 JavaScript 代码 |
Regular expression | 正则表达式类型,用于存储正则表达式 |
操作示例:
$ ./mongo
#标准 URI 连接语法:mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]
> mongodb://admin:123456@localhost/test #连接数据库
> use mydb #创建数据库
> db #查看
> show dbs #查看所有数据库
> db.dropDatabase() #删除当前数据库
> db.createCollection("myCol") #创建集合
> show collections
> db.myCol.drop() #删除集合
> db.myCol.insert(doc) #插入文档,没有集合自动创建
> db.myCol.insertOne(doc)
> db.myCol.insertMany(doc1,doc2)
> db.myCol.remove({}) #删除所有文档
> db.myCol.find().pretty() #查询文档(格式化显示)
> db.myCol.find({likes : {$gt : 100}}) #条件查询 $gt 大于 $lt 小于 $gte 大于等于 $lte 小于等于
> db.myCol.createIndex({"filed":1}) #创建索引