MongoDB
1、介绍
MongoDB是一个文件型数据库,介于关系型数据库和非关系型数据库之间,他和我们使用的关系型数据库最大的区别就是约束性,可以说文件型数据库几乎不存在约束性,没有主外键约束,没有存储的数据类型约束。
Collection也就是关系型数据库中"表"的概念,Documents就是"数据条目",Field就是"字段"
版本:3.4.15
注意配置环境变量,启动服务端:mongod 启动客户端:mongo
启动之前一定要注意在安装的盘符下创建 data/db文件结构
2、MongoDB的增删改查
注意:MongoDB中如果你使用了不存在的对象,那么就等于你在创建这个对象
数据库与Collection的创建:
创建数据库并使用该数据库:use databaseName
显示当前使用的数据库:db
创建并使用Collection: db.tableName
插入数据:
insertOne:db.Oldboy.insertOne({"name":"DragonFire","age":20})
insertMany:db.Oldboy.insertMany([{"name":"DragonFire","age":20},{"name":"alex","age":30}])
查询数据:
db.Oldboy.find({name:"WuSir2b"})
db.Oldboy.findOne({age:19}) : 条件查找一条age等于19的数据,如有多条数据则返回更靠前的数据
修改数据
db.Oldboy.updateOne({"age":19},{$set:{"name":"WSSB"}}) # $set 是update时的关键字,没有name属性及创建name属性
db.Oldboy.updateMany({"age":19},{$set:{"name":"pig_qi"}})
删除数据:
db.Oldboy.remove({"name":"DragonFire"}) : 条件删除name等于"DragonFire"的所有Document
3、MongoDB数据类型
Object ID:Documents 自生成的 _id, 这个类型是不可以被JSON序列化的
String: 字符串,必须是utf-8
Boolean:布尔值,true 或者false,小写
Integer:整数 (Int32 Int64 你们就知道有个Int就行了,一般我们用Int32)
Double:浮点数 (没有float类型,所有小数都是Double)
Arrays:数组或者列表,多个值存储到一个键 (list哦,大Python中的List哦)
Object:如果你学过Python的话,那么这个概念特别好理解,就是Python中的字典,这个数据类型就是字典
Null:空数据类型 , 一个特殊的概念,None Null
Timestamp:时间戳
Date:存储当前日期或时间unix时间格式 (我们一般不用这个Date类型,时间戳可以秒杀一切时间类型)
4、$修改器
查询中常见的 等于 大于 小于 大于等于 小于等于
db.Oldboy.findOne({"score":{"$gt:80"}})
db.Oldboy.findOne({"score":{"$lt:80"}})
db.Oldboy.findOne({"score":{"$gte:80"}})
db.Oldboy.findOne({"score":{"$lte:80"}})
update修改器: $inc $set $unset $push $pull
$inc:变量加等于一个值
db.Oldboy.update({"score":59},{$inc:{"score":1}}) #"score"的原有数值上面 +1
db.Oldboy.update({"score":60},{$inc:{"score":-40}})
$set:用来修改一个字段的值或者是创建一个新的字段
db.Oldboy.update({"score":100},{$set:{"english_name":"LuffyCity"}}) #:把 "score" 为 100 分 的 "english_name" 赋值为 "LuffyCity"
$unset:用来删除一个字段
db.Oldboy.update({"score":100},{$unset:{"english_name":1}})
$push:向array中新增数据类型
db.Oldboy.updateMany({},{$set:{"test_list":[1,2,3,4,5]}})
注意:查询条件为空,也要写上{},为所有满足条件的 Document 添加 "test_list"
db.Oldboy.updateMany
({"score":100},{$push:{"test_list":6}})
将 "score" 为 100 的Document 中"test_list" 添加一个 6
$pull:对array中的某个元素进行删除
db.Oldboy.updateMany({"score":100},{$pull:{"test_list":6}})
$pop:指定删除Array中的第一个 或 最后一个 元素
db.Oldboy.updateMany({"score":100},{$pop:{"test_list":1}})
{$pop:{"test_list" : -1}} -1 代表最前面, 1 代表最后边
$和关键字一起使用为修改器,单独使用代指筛选原数的下标
db.Oldboy.updateMany({"score":100,"test_list":2},{$set:{"test_list.$":9}})
5、array、objectde特殊用法
先建立一条数据
db.Oldboy.insert({"name":"路飞学城-骑士计划","price":[19800,19500,19000,18800],"other":{"start":"2018年8月1日","start_time":"08:30","count":150}})
把price 中 19000 改为 19300
db.Oldboy.updateMany({"name":"路飞学城-骑士计划"},{$set:{"price.2":19300}})
如果 price.1 中小于19800 则加 200
db.Oldboy.updateMany({"name":"路飞学城-骑士计划","price.1":{$lt:19800}},{$inc:{"price.1":200}})
我们把 price 小于 19500 的 自动补上 200
db.Oldboy.updateMany({"name":"路飞学城-骑士计划","price":{$lt:19500}},{$inc:{"price.$":200}})
db.Oldboy.updateMany({"price.count":{$gt:175}},{$inc:{"price.$.count":15}})
6、skip,limit、sort
db.Oldboy.find().skip(1).limit(2)
db.Oldboy.find().sort({"price":1}) #1为升序,-1为降序
Sort + Skip + Limit 是有执行优先级的 他们的界别分别是 优先 Sort 其次 Skip 最后 Limt