目录
- 简介
- MongDB的使用和创建
- MongoDB之增删改查
- 增
- 查
- 改
- 删
- MongoDB的数据类型
- MongoDB中的数据表,数据行,数据列
简介
MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。
MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。
它和我们使用的关系型数据库最大的区别就是约束性,可以说关系型数据库几乎不存在约束性,理论上没有主外键约束,没有存储的数据类型约束等等
关系型数据库中有一个 "表" 的概念,有 "字段" 的概念,有 "数据条目" 的概念
MongoDB中也同样有以上的概念,但是名称发生了一些变化,严格意义上来说,两者的概念即为相似,但又有些出入.
默认端口: 27017
MongDB的使用和创建
1. 启动命令
mongod (开启服务端)
mongod --dbpath="指定的数据库存放路径"
# 打开另一个cmd窗口
2. 应用连接MongoDB数据库
mongo (开启客户端)
3. MongoDB数据:
mongodb - 数据库服务 - 数据库 - 数据表 - 字段 - 数据
4. 查看当前是数据库服务中的数据库 (磁盘中的数据库)
show databases
5. 切换当前使用的数据库 如果数据库不存在, 会在内存中创建一个新的数据库
use DBName
6. 显示当前使用的数据库
db
7. 查看当数据库的表 (预览 - 磁盘中的数据表)
show tables
8. 创建数据表
db.数据表名 # 在内存中创建数据库表 (这个过程只会创建, 并不保存表结构)
9. 增加数据 # 写入数据才能将内存中的数据库和数据库表永久写入到磁盘中
语法:
数据库.数据表.指令({"key":"value"})
db.users.insert ({"name":1, "age":2})
MongoDB之增删改查
增
官方不推荐: 3.2版本加入新的insert写入方式
增加一条: db.table.insert({name:1})
增加多条: db.table.insert([{name:1},{name:2},{name:3}])
官方推荐:
增加一条: db.table.insertOne({}) # 返回 _id
增加多条: db.table.insertMany([{},{},{}]) # 返回 _ids, 无需参数控制
查
无条件查询:
db.table.find({}) # 查询所有符合条件数据
db.table.findOne({}) # 查询一条数据, 默认返回第一条
带有简单条件的查询:
db.table.findOne({"name": "jason"}) # 查询 name 为 jason 的数据
db.table.find({"name": "jason", "age": 18}) # 并列条件, 同时满足name和age
改
基本语法:
db.table.update({"条件"}, {"关键字": {"修改内容"}})
官方不推荐:
db.table.update({"name":"ran"},{"$set": {"age": 20}}) # 更新符合条件的数据, 默认更新第一条符合条件的数据
官方推荐:
db.table.updateOne({"age":18},{"$set":{"age": 24}}) # 只修改符合条件的第一条数据
db.table.updateMany({"age":18},{"$set":{"name": "mei"}}) # 修改所有符合条件的数据
注意:
1) $set: 修改器, 强制将某字段的value值修改
2) 如果条件为空, 那么就会修改表中所有数据
3) 被修改的内容部分, 如果字典的key不存在, 就会创建一条新的数据
删
官方不推荐:
db.table.remove({"name": "mei"}) # 删除符合条件的所有数据
db.table.remove({}) # 删除的所有数据
官方推荐:
db.table.deleteOne({"name":"mei"}) # 删除符合条件的第一条数据
db.table.deleteMany({"name":"mei"}) # 删除符合条件的所有的数据
db.table.deleteMany({}) # 删除所有数据
MongoDB的数据类型
1. ObjectId: Documents 自生成的世界上唯一 _id (不限定在数据库和数据表中)
"_id" : ObjectId("5b151f85 364098 09ab 2e6b26")
0-8字节 # 代指的是时间戳,这条数据的产生时间
9-14字节 # 代指某台机器的标识符,表示MongoDB实例所在机器的不同
15-18字节 # 代指进程ID,表示相同机器的不同MongoDB进程。
19-24字节 # 代指计数器,这里要注意的是,计数器的数字可能会出现重复,不是唯一的
注意: 这个类型是不可以被JSON序列化的
2. String: 字符串类型 必须是utf-8
3. Int: 整形 (Int32 Int64) 如果不直接指定Int 存储的是double
4. Double: 双精度浮点型, 默认数字存储的数据类型 (所有小数都是Double, 没有float类型)
5. Array: 数组数据类型, 多个值存储到一个键 (list:[])
6. Object: 字典数据类型
7. Date : 时间日期数据类型 ISODate() 通常使用时间戳
8. Null: 空值数据类型 (None)
9. Boolean: 布尔值, true 或 false (小写)
10. Timestamp: 通常情况下为 double 类型
MongoDB中的数据表,数据行,数据列
MySQL | MongoDB | |
数据表 | table | Collections |
数据行 | row | Documents |
数据列 | 字段 | Field |