本文将根据下图介绍MongoDB中常用概念。如下图:
上图中,左边的是 MySQL 数据库中 users 表,右边是 MongoDB 中 users 集合。虽然表现形式不同,但是数据内容还是一样的。其中:
test:表示数据库
users:表示集合,类似MySQL中的表
{id:"1",name:"张三",age:28,email:"zhangs@gmail.com"}:表示一个文档,类似于MySQL中的记录
id、name、age和email:表示字段
MongoDB中创建users集合,以及向users集合中添加文档。如下:
# 向 users 集合添加文档,同时创建 users 集合 > db.users.insert({id:1, name:"张三", age:28, email:"zhangs@gmail.com"}); WriteResult({ "nInserted" : 1 }) > db.users.insert({id:2, name:"李四", age:25, email:"lis@sina.com"}); WriteResult({ "nInserted" : 1 }) # 查看 users 集合中的文档 > db.users.find(); { "_id" : ObjectId("5e48ad8fc6a7b04f98190b4e"), "id" : 1, "name" : "张三", "age" : 28, "email" : "zhangs@gmail.com" } { "_id" : ObjectId("5e48adaac6a7b04f98190b4f"), "id" : 2, "name" : "李四", "age" : 25, "email" : "lis@sina.com" }
一个MongoDB中可以建立多个数据库,这些数据库是相互独立的,有自己的集合和权限。不同的数据库使用不同的文件存储(不存储在一个文件中)。
MongoDB默认有3个数据库:
admin: 从权限的角度来看,这是"root"数据库。将一个用户添加到这个数据库,这个用户会自动继承所有数据库的权限。一些特定的服务器端命令也只能在这个数据库中运行,比如列出所有的数据库或者关闭服务器。
local: 这个数据库永远不会被复制,里面的数据都是本地的(不会复制到其他MongoDB服务器上),可以用来存储限于本地单台服务器的任意集合
config: 当Mongo用于分片设置时,config数据库在内部使用,用于保存分片的相关信息。
一个数据库可以拥有多个集合,mongodb中的数据库相当于关系型数据库中的数据库,例如:MySQL中的数据库。
集合是一组文档(即上面的 users 集合)。集合相当于关系数据库中的表,但集合中的文档长度可不同(集合中的文档中的键值对个数可不同)、集合中文档的key可不同。向集合中插入第一个文档时,集合会被自动创建。
文档是一组键值对,用{ }表示,字段之间用逗号分隔。相当于关系数据库中的一行(一条记录)。示例:一个文档
{ id: "1", name: "张三", age: 28, email: "zhangs@gmail.com" }
这样写是为了方便看字段,也可以写在一起 {id:"1",name:"张三",age:28,email:"zhangs@gmail.com"},一样的。
说明:
文档中的键值对是有序的
一个文档中不能有重复的key(对应关系数据库中的一条记录)
以"_"开头的key是保留的,有特殊含义。
即一个键值对,key必须是String类型,value可以是任意类型。