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
posted @ 2019-06-27 08:56  言值  阅读(121)  评论(0编辑  收藏  举报