MongoDB 的增、查、改、删

Monogo使用

  1. 单条增加
bash 复制代码
db.member.insertOne({"name":"张三","age":18,"create":new Date()})
db.member.insert({"name":"李四1","age":18,"create":new Date()})
db.member.insertOne({"_id":1,"name":"张三","age":18,"create":new Date()})
  1. 多条增加
bash 复制代码
db.member.insertMany([{"_id":2,"name":"李四","age":18,"create":new Date()},{"_id":3,"name":"王五","age":18,"create":new Date()}])

查询

这个查询,每一块都是一个个复杂的json串组合而成

  1. 查询age=18
bash 复制代码
# 缩写
db.member.find({age:18});
# 完整写法
db.member.find({
    age: {
        $eq: 18
    }
});
  • 查询 _id>2 并且 age =18
bash 复制代码
# 缩写
db.member.find({_id :{$gt: 2}, age:18});
# 完整写法
db.member.find({
    $and: [
    {
        _id: {
            $gt: 2
        }
    }, 
    {
        age: {
            $eq: 18
        }
    }]
})
  1. 排序
  • -1 是降序
  • 1 是升序
bash 复制代码
db.member.find({_id :{$gt: 2}}).sort({_id:-1});
  1. 分页
  • skip:跳过指定记录数
  • limit:返回结果数量
bash 复制代码
# 跳过第一条后,返回3条数据
db.member.find().skip(1).limit(5);
#假如有数据1,2,3,4,5
#返回 2,3,4
  1. 返回指定字段
  • 0代表不显示
  • 1代表显示
    ** 注意:_id默认是显示的,只有_id不显示是设置0,其他字段都不可以设置0 **

格式:find({查询条件,可以空},{显示的字段:1})

bash 复制代码
db.member.find({},{age:1})
  1. 查询操作符
    | 操作符 | 描述 | 对比mysql |
    |--|--|--|
    |eq\| 等值比较,find({_id :{ KaTeX parse error: Expected 'EOF', got '}' at position 6: eq: 1}̲}) 等价于 find({_i...ne\| 不等于指定值,find({_id :{ KaTeX parse error: Expected 'EOF', got '}' at position 6: ne: 1}̲}) \|id != 1 或 i...in\| 数组中包含 ,find( { _id :{ KaTeX parse error: Expected 'EOF', got '}' at position 13: in: \[ 1,2 \] }̲ } ) \|id in ( 1...nin\| 数组中不包含,find( { _id :{ KaTeX parse error: Expected 'EOF', got '}' at position 14: nin: \[ 1,2 \] }̲ } ) \|id not in...gt\| 大于指定值,find({_id :{KaTeX parse error: Expected 'EOF', got '}' at position 6: gt: 1}̲})\| id \> 1\| \|get\| 大于等于指定值,find({_id :{KaTeX parse error: Expected 'EOF', got '}' at position 7: gte: 1}̲}) \|id \>= 1\| \|lt\| 小于指定值,find({_id :{KaTeX parse error: Expected 'EOF', got '}' at position 6: lt: 1}̲}) \|id \< 1\| \|lte\| 小于等于指定值,find({_id :{KaTeX parse error: Expected 'EOF', got '}' at position 7: lte: 1}̲})\| id \<= 1\| \|and\| 与(并且)查询,find({and:[ { _id:{ gt:1} },{ _id:{ KaTeX parse error: Expected 'EOF', got '}' at position 5: lt:4}̲ } \]})\| id \> 1 ...or\| 或查询,find({KaTeX parse error: Expected 'EOF', got '}' at position 27: ...1 },{ _id: 3} \]}̲) \|id = 1 or id...not\| 非查询,非小于3的数据 find({_id :{not :{ KaTeX parse error: Expected 'EOF', got '}' at position 7: lt: 3 }̲ } })| id >= 3|...nor| 即非查询,find( { KaTeX parse error: Expected 'EOF', got '}' at position 44: ...}, { _id: 3 }] }̲ )| (id != 1 an...all| 同时包含,查询tag同时包含3和9的数据,tag是一个数组,find({tag:{KaTeX parse error: Expected 'EOF', got '}' at position 10: all:[3,9]}̲}) | | |elemMatch | 有一个元素匹配即可,find({job:{KaTeX parse error: Expected 'EOF', got '}' at position 44: ...mpany:'xiaomi'}}̲}) || |size| 匹配数组大小,find({tag:{KaTeX parse error: Expected 'EOF', got '}' at position 7: size:3}̲}) || |slice| 返回数组中第几个元素,find({job:{KaTeX parse error: Expected 'EOF', got '}' at position 43: ...ompany:'baidu'}}̲},{name:1,job:{slice:1}})||
    |KaTeX parse error: Expected '}', got 'EOF' at end of input: ...文档,find({name:{exists:true}}) | |

修改

格式 : db.集合.update(query, update, options)

  • query:更新的查询条件
  • update:要更新的内容
  • options:更新的选项
  1. 更新单个文档
    更新_id等于3的年龄
bash 复制代码
db.member.update({_id:3},{$set:{age:11}})
db.member.updateOne({_id:3},{$set:{age:11}})
  1. multi更新多个文档
    **更新多个文档需要设置multi选项 :true,默认情况下mongo update命令在更新第一个文档后就返回。 **
bash 复制代码
db.member.update({age:19},{$set:{ name:'zhang1'}},{'multi':true});
#要不你换成这样子写,就可以更新多条
db.member.updateMany({age:19},{$set:{ name:'zhang33'}})
  1. upsert更新的字段不存在则插入
    ** upsert选项为true:如果更新文档不存在则创建文档,如果文档存在字段不存在则创建字段,都存在则更新**
bash 复制代码
db.member.update({_id:3}, { $set:{ address :'北京'} } ,{upsert:true})
  1. indAndModify查询和修改
    ** 查询并修改指定值,注意先返回结果,后更新,返回的结果是旧数据 **
bash 复制代码
db.member.findAndModify({query:{name:'张1'} , update:{ $set:{ 'age':18 } } })
  1. 查询并修改指定值,并返回新值
bash 复制代码
db.member.findAndModify({query:{name:'张1'} , update:{ $set:{ 'age':18 } } })
操作符 格式 描述
$set { $set : { filed : value} } 指定一个键,并更新值
$unset { $unset : { filed : 1} } 删除一个键
$inc { $inc : { filed : value} } 对数值类型进行增减
$push { $push : { filed : value} } 将数值追加到数组中,若数组不存在则会进行初始化
$pushAll { $pushAll : { filed : value_array} } 追加多个值到数组内
$pull { $pull : { filed : value} } 从数组中删除指定元素
$addToSet { $addToSet : { filed : value} } 添加元素到数组中,具有排重功能
$pop { $pop : { filed : 1} } 删除数组第一个或最后一个
$rename { $rename : { old_filed_name : new_filed_name } } 修改地段名称
$bit { $bit : { filed : {and :5} } } 位操作,integer类型

删除

  1. 删除单个文档
bash 复制代码
db.member.deleteOne({_id:2})
  1. remove命令会删除匹配条件的全部文档,删除单个文档,可以根据_id 或者唯一值删除。
bash 复制代码
db.member.remove({name:'张1'})
  1. 如果希望明确删除一个文档,需要指定justOne参数
bash 复制代码
db.member.remove({age:19},true)
  1. 删除多个文档
bash 复制代码
db.member.remove({age:19})
或
db.member.deleteMany({age:19})
  1. 删除全部文档
bash 复制代码
db.member.remove({})
或
db.member.deleteMany({})
或
db.member.drop()
# remove与deleteMany是对查询范围内的数据逐条删除,drop是删除整个集合(包括全部索引)drop更高效
  1. 删除并返回删除的数据findOneAndDelete

remove和deleteMany只能按照默认顺序删除,并返回确认信息。findOneAndDelete可以指定顺序删除文档和返回删除的内容

bash 复制代码
删除并返回

db.member.findOneAndDelete({age:18})

删除指定排序的数据

db.member.findOneAndDelete({age:18},{sort:{_id:-1}})
相关推荐
冒泡的肥皂2 小时前
MVCC初学demo(一
数据库·后端·mysql
.Shu.3 小时前
Redis Reactor 模型详解【基本架构、事件循环机制、结合源码详细追踪读写请求从客户端连接到命令执行的完整流程】
数据库·redis·架构
anghost1505 小时前
基于单片机的智能声控窗帘
单片机·嵌入式硬件·mongodb
薛晓刚6 小时前
当MySQL的int不够用了
数据库
SelectDB技术团队6 小时前
Apache Doris 在菜鸟的大规模湖仓业务场景落地实践
数据库·数据仓库·数据分析·apache doris·菜鸟技术
星空下的曙光6 小时前
mysql 命令语法操作篇 数据库约束有哪些 怎么使用
数据库·mysql
小楓12016 小时前
MySQL數據庫開發教學(一) 基本架構
数据库·后端·mysql
染落林间色6 小时前
达梦数据库-实时主备集群部署详解(附图文)手工搭建一主一备数据守护集群DW
数据库·sql
颜颜yan_7 小时前
企业级时序数据库选型指南:从传统架构向智能时序数据管理的转型之路
数据库·架构·时序数据库
lichenyang4537 小时前
管理项目服务器连接数据库
数据库·后端