🉐獭

MongoDB

2019-05-10  本文已影响38人  浩3108

MongoDB 就是这样一款非关系型的,基于分布式文件存储的数据库。由C++语言编写。

什么叫非关系型?

就是把数据直接放进一个大仓库,不标号、不连线、单纯的堆起来。传统数据库由于受到各种关系的累赘,各种数据形式的束缚,难以处理海量数据以及超高并发的业务场景。

数据库基本概念

一个 MongoDB 可以创建多个数据库

文档

文档是 MongoDB 的核心,类似于 关系数据库中的每一行数据。多个键及其关联的值放在一起就是文档。

{"name":"H3108"}

文档的逻辑联系

# user文档
{
   "name": "Tom Hanks",
   "contact": "987654321",
   "dob": "01-01-1991"
}

# address文档
{
   "building": "22 A, Indiana Apt",
   "pincode": 123456,
   "city": "chengdu",
   "state": "sichuan"
}
  1. 嵌入式关系:把 address 文档嵌入到 user 文档中
# 这就是嵌入式的关系
{
   "name": "Tom Hanks",
   "contact": "987654321",
   "dob": "01-01-1991",
   "address":
   [{
   "building": "22 A, Indiana Apt",
   "pincode": 123456,
   "city": "chengdu",
   "state": "sichuan"
   },
   {
   "building": "170 A, Acropolis Apt",
   "pincode": 456789,
   "city": "beijing",
   "state": "beijing"
   }]
}
  1. 引用式关系:将两个文档分开,通过引用文档的_id 字段来建立关系
# 这就是引用式关系
{
   "name": "Tom Benzamin",
   "contact": "987654321",
   "dob": "01-01-1991",
   "address_ids": [
      ObjectId("52ffc4a5d85242602e000000")    #对应address文档的id字段
   ]
}

在实际应用的时候,嵌入式关系比较适合一对一的关系,引用式关系比较适合一对多或者多对多的情况。

集合

集合就是一组文档的组合,就相当于是关系数据库中的表,在 MongoDB 中可以存储不同的文档结构的文档。

{"name":"H3108"} {"sex":"man","age":"0"}

元数据

数据库的信息存储在集合中,他们统一使用系统的命名空间:DBNAME.system.*

DBNAME 可用 db 或数据库名替代:

数据库操作

创建数据库

进入 MongoDB 命令行:
`mongo`

使用 use 命令创建数据库:
`use mydb`

查看当前连接的数据库:
`db`

查看所有的数据库:
`show dbs`

列出的所有数据库中看不到 mydb 或者显示 mydb(empty) ,
因为 mydb 为空,里面没有任何东西,MongoDB 不显示或显示。

销毁数据库

use 命令进入数据库:
`use mydb`

使用 db.dropDatabase() 销毁数据库:
`db.dropDatabase()`

查看所有的数据库:
`show dbs`

可以发现 mydb 数据库已经被删除了。

集合操作

创建集合

use 命令进入数据库:
`use mydb`

使用 db.createCollection() 创建集合:
`db.createCollection("users")`

查看创建的集合:
`show collections`

删除集合

查看创建的集合:
`show collections`

使用 db.**.drop() 删除集合:
 `db.users.drop()`

查看创建的集合:
`show collections`

insert()

insert 是插入,侧重于新增一个记录

db.users.insert([
{ name : "jam",
 email : "jam@qq.com"
},
{ name : "tom",
email : "tom@qq.com"
}
])

save()

save 是保存,可以保存一个新的记录,也可以保存对一个记录的修改

db.users.save([
{ name : "jam",
 email : "jam@qq.com"
},
{ name : "tom",
email : "tom@qq.com"
}
])
上一篇下一篇

猜你喜欢

热点阅读