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}})
相关推荐
Channing Lewis28 分钟前
sql server如何创建表导入excel的数据
数据库·oracle·excel
秃头摸鱼侠29 分钟前
MySQL安装与配置
数据库·mysql·adb
UGOTNOSHOT34 分钟前
每日八股文6.3
数据库·sql
行云流水行云流水1 小时前
数据库、数据仓库、数据中台、数据湖相关概念
数据库·数据仓库
John Song1 小时前
Redis 集群批量删除key报错 CROSSSLOT Keys in request don‘t hash to the same slot
数据库·redis·哈希算法
IvanCodes1 小时前
七、Sqoop Job:简化与自动化数据迁移任务及免密执行
大数据·数据库·hadoop·sqoop
tonexuan1 小时前
MySQL 8.0 绿色版安装和配置过程
数据库·mysql
JohnYan2 小时前
工作笔记- 记一次MySQL数据移植表空间错误排除
数据库·后端·mysql
我最厉害。,。2 小时前
Windows权限提升篇&数据库篇&MYSQL&MSSQL&ORACLE&自动化项目
数据库·mysql·sqlserver
远方16092 小时前
20-Oracle 23 ai free Database Sharding-特性验证
数据库·人工智能·oracle