简介

MongoDB是NoSQL非关系型,文件型数据库

数据存储

Mysql:
id name age sp wq
1 孙悟空 99999 null 定海神针
2 沙悟净 99998 和尚同款项链 null
Mongodb:
{
id:1,
name:孙悟空,
age:99999,
wq:定海神针,
ts:金箍,
fs:虎皮裙,红丝袜,长筒靴
hobby:['铁扇公主','紫霞','晶晶']
skill:[
{
name:'火眼金睛',
content:'透视',
},{
name:'变大小',
content:'变~~~~'
}
]
},
{
id:2,
name:沙悟净,
age:99998,
sp:和尚同款项链
}

mongodb存储的就是json数据

相关指令

终端输入>>>>mongo   #进入mangodb数据库
show databases; # 显示所有数据库
use databasename # 使用并切换到指定的数据库
db #查看当前使用的数据库
show tables # 显示当前数据库下的所有表
use 不存在的数据库名 # 创建数据库
db.不存在的表名 # 创建表
# 上面新创建数据库和创建表是看不到的,原因是在内存中创建的,但是当你插入数据后就能在本地查看到。
db.tablename.insert({"键":"值"}) # 插入数据
db.tablename.find({查询条件}) # 查询所有符合条件的数据
db.tablename.findOne({查询条件}) # 查询所有符合条件的第一条数据 返回json数据
db.tablename.update({内置条件},{修改语句}) #修改数据 所有mongodb的修改全部基于 修改器 如果符合条件的数据有多条也只会修改第一条
$set #强制将某字段值修改
db.tablename.update({age:66},{$set:{age:77}}) # 如果该字段不存在即创建该字段并赋值
$unset # 删除字段
db.tablename.update({name:"孙悟空"},{$unset:{age:1}}) # 必须为1
$inc # 引用增加 先引用原有数据,在原有数据基础上增加
db.tablename.update({name:"孙悟空"},{$inc:{age:10}})
$push # 针对Array List操作 相当于append
db.user.update({name:"孙悟空", {$push:{hobby:7}}}) #在hobby中添加7
$pushAll # 相当于extends
db.user.update({name:"孙悟空", {$pushAll:{hobby:[8,9,10]}}})
$pull #相当于remove() 循环遍历删除
db.user.update({name:"孙悟空", {$pull:{hobby:7}}})
$pullAll #删除多个 循环遍历删除
db.user.update({name:"孙悟空", {$pullAll:{hobby:[8,9,10]}}})
$pop # 约等于pop() 因为$pop只能删除第一个和最后一个,默认是最后一个 负数从上往下删(第一个数据) 正数从下往上删(最后一个)
db.tablename.remove({查询条件}) #删除指定数据,不写条件则删除所有
$ #数学比较符
$gt #大于
$gte #大于等于
$lt #小于
$lte #小于等于
$eq #等于
$ne #不等于
db.tablename.find({age:{$gt:70}}) # 年龄大于70的

MongoDB之增删改查_数据库
MongoDB之增删改查_数据_02
MongoDB之增删改查_python_03

官方推荐写法 增删改查 3.2以后

# 增
db.user.insertOne({}) # 新增一条数据
db.user.insertMany([{},{}]) #新增多条
# 查询
db.user.findOne({}) #查询符号条件的第一条数据
# 改
db.user.updateOne({},{}) # 修改符合条件的第一条数据
db.user.updateMany({},{}) #修改符合条件的所有数据
修改中$关键字的用法 name:"孙悟空",hobby:['抽烟','喝酒','烫头'] 将hobby中的喝酒改为飙车
$是用来存储符合当前Array条件元素的下标索引
db.user.updateOne({name:'孙悟空',hobby:'喝酒'},{$set:{"hobby.$":"飙车"}})
# {student:{name:"java",content:"基础教学"}} 将字典中的name改为python
db.user.updateOne({name:'孙悟空'},{$set:{"student.name":"python"}})
# [{'name':"py"},{'name':"MPy"},{'name':"开车"}] 将列表中字典name对应的值为MPy的改为anyway
db.user.updateOne({name:'孙悟空',"student.name":'MPy'},{$set:{"student.$.name":"anyway"}})
# 删
db.user.deleteOne({}) # 删除符合条件的第一条
db.user.deleteMany({}) # 删除所有符合条件的数据

数据类型

Object  ID :Documents 自生成的 _id

String: 字符串,必须是utf-8

Boolean:布尔值,true 或者false (这里有坑哦~在我们大Python中 True False 首字母大写)

Integer:整数 (Int32 Int64 你们就知道有个Int就行了,一般我们用Int32)

Double:浮点数 (没有float类型,所有小数都是Double)

Arrays:数组或者列表,多个值存储到一个键 (list哦,大Python中的List哦)

Object:如果你学过Python的话,那么这个概念特别好理解,就是Python中的字典,这个数据类型就是字典

Null:空数据类型 , 一个特殊的概念,None Null

Timestamp:时间戳

Date:存储当前日期或时间unix时间格式 (我们一般不用这个Date类型,时间戳可以秒杀一切时间类型)

可视化操作工具nosqlbooster for mongodb的使用

MongoDB之增删改查_python_04
MongoDB之增删改查_数据库_05
MongoDB之增删改查_数据_06
MongoDB之增删改查_python_07

选取,跳过,排序

# 排序
db.user.find({}).sort({age:1}) #以age字段进行排序,1表示正序,-1表示倒序
# 跳过
db.user.find({}).skip(2) # 跳过前两条后查询
# 选取
db.user.find({}).limit(5) # 选取5条
# 重点
当上面三个关键全部出现在一条语句中时,会按照先排序再跳过再选取的逻辑。无论哪个怎么打乱顺序都是会按照这个逻辑查询查询出数据。
可用于分页


-------------------------------------------

个性签名:代码过万,键盘敲烂!!!

如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,博主在此感谢!