MongoDB之增删改查

简介

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的



官方推荐写法 增删改查 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的使用




选取,跳过,排序

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

原文地址:https://www.cnblogs.com/weiweivip666/p/14050903.html