MongoDB 简介
简介
MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似 json 的 bson 格式,因此可以存储比较复杂的数据类型。
面向集合的存储
在 MongoDB 中,一个数据库包含多个集合,类似于 MySQL 中一个数据库包含多个表;一个集合包含多个文档,类似于 MySQL 中一个表包含多条数据
MongoDB 基本概念
数据库
- 一个 MongoDB 可以创建多个数据库
- 使用 show dbs 可以查看所有数据库的列表
- 执行 db 命令则可以查看当前数据库对象或者集合
- 运行 use 命令可以连接到指定的数据
文档
文档是 MongoDB 的核心,类似于 SQLite 数据库(关系数据库)中的每一行数据。多个键及其关联的值放在一起就是文档。在 Mongodb 中使用一种类 json 的 bson 存储数据,bson 数据可以理解为在 json 的基础上添加了一些 json 中没有的数据类型。
文档的逻辑联系
假设存在用户和地址两个“文档”
{ "name": "Tom Hanks", "contact": "987654321", "dob": "01-01-1991" }#user文档 { "building": "22 A, Indiana Apt", "pincode": 123456, "city": "chengdu", "state": "sichuan" }#address文档
第一种关系(嵌入式关系),将address文档嵌入到user文档中:
{ "name": "Tom Hanks", "contact": "987654321", "dob": "01-01-1991" ,"address":{ "building": "22 A, Indiana Apt", "pincode": 123456, "city": "chengdu", "state": "sichuan" }}
存在多个地址的情况
{ "name": "Tom Hanks", "contact": "987654321", "dob": "01-01-1991" ,"address":[
{ "building": "22 A, Indiana Apt", "pincode": 123456, "city": "chengdu", "state": "sichuan" },
{ "building": "23 A, Indiana Apt", "pincode": 123456, "city": "chengdu", "state": "sichuan" }
]}
第二种关系(引用式关系):将两个文档分开,通过引用文档的_id字段来建立关系
{ "contact": "987654321", "dob": "01-01-1991", "name": "Tom Benzamin", "address_ids": [ ObjectId("52ffc4a5d85242602e000000") #对应address文档的id字段 ] }
集合
集合就是一组文档的组合,就相当于是关系数据库中的表,在 MongoDB 中可以存储不同的文档结构的文档。例如把上面的用户和地址的文档同时放进一个集合中
常用数据库操作:
1、创建数据库,好像启动服务器后,没有直接特别的创建命令,直接使用use 命令,如 use mydb
2、查看当前连接的数据库或者集合 db
3、查看所有的数据库 show dbs
---刚开始学习时发现大量使用use,然后show dbs看不到新建的数据库,
列出的所有数据库中看不到 mydb 或者显示 mydb(empty) ,因为 mydb 为空,里面没有任何东西,MongoDB 不显示或显示 mydb(empty)
4、删除数据库 使用use进入数据库,然后通过db.dropDatabase()
删除成功{“dropped”:"aa","ok":1}
5、创建集合,使用db.createCollection(”user“)
6、查看集合,show conllections
7、删除集合db.集合名.dorp() 删除成功返回true
8、向集合插入数据db.user.insert({name:'niuh',email:"niuh@126.com"})
9、使用save() --如何集合没有会自动创建db.user.save({name:'niuh',email:"niuh@126.com"})