MongoDB 的增、查、改、删

Monogo使用

  1. 单条增加
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. 多条增加
db.member.insertMany([{"_id":2,"name":"李四","age":18,"create":new Date()},{"_id":3,"name":"王五","age":18,"create":new Date()}])

查询

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

  1. 查询age=18
# 缩写
db.member.find({age:18});
# 完整写法
db.member.find({age: {$eq: 18}
});
  • 查询 _id>2 并且 age =18
# 缩写
db.member.find({_id :{$gt: 2}, age:18});
# 完整写法
db.member.find({$and: [{_id: {$gt: 2}}, {age: {$eq: 18}}]
})
  1. 排序
  • -1 是降序
  • 1 是升序
db.member.find({_id :{$gt: 2}}).sort({_id:-1});
  1. 分页
  • skip:跳过指定记录数
  • limit:返回结果数量
# 跳过第一条后,返回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})

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的年龄
db.member.update({_id:3},{$set:{age:11}})
db.member.updateOne({_id:3},{$set:{age:11}})
  1. multi更新多个文档
    **更新多个文档需要设置multi选项 :true,默认情况下mongo update命令在更新第一个文档后就返回。 **
db.member.update({age:19},{$set:{ name:‘zhang1’}},{‘multi’:true});
#要不你换成这样子写,就可以更新多条
db.member.updateMany({age:19},{$set:{ name:‘zhang33’}})
  1. upsert更新的字段不存在则插入
    ** upsert选项为true:如果更新文档不存在则创建文档,如果文档存在字段不存在则创建字段,都存在则更新**
db.member.update({_id:3}, { $set:{ address :‘北京’} } ,{upsert:true})
  1. indAndModify查询和修改
    ** 查询并修改指定值,注意先返回结果,后更新,返回的结果是旧数据 **
db.member.findAndModify({query:{name:‘张1’} , update:{ $set:{ ‘age’:18 } } })
  1. 查询并修改指定值,并返回新值
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. 删除单个文档
db.member.deleteOne({_id:2})
  1. remove命令会删除匹配条件的全部文档,删除单个文档,可以根据_id 或者唯一值删除。
db.member.remove({name:‘张1’})
  1. 如果希望明确删除一个文档,需要指定justOne参数
db.member.remove({age:19},true)
  1. 删除多个文档
db.member.remove({age:19})
或
db.member.deleteMany({age:19})
  1. 删除全部文档
db.member.remove({})
或
db.member.deleteMany({})
或
db.member.drop()
# remove与deleteMany是对查询范围内的数据逐条删除,drop是删除整个集合(包括全部索引)drop更高效
  1. 删除并返回删除的数据findOneAndDelete

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

删除并返回db.member.findOneAndDelete({age:18})删除指定排序的数据db.member.findOneAndDelete({age:18},{sort:{_id:-1}})

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/14312.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

35.图片幻灯片

图片幻灯片 html部分 <div class"carousel"><div class"image-container"><img src"./static/20180529205331_yhGyf.jpeg" alt"" srcset""><img src"./static/20190214214253_hsjqw.webp"…

Python网络编程详解:Socket套接字的使用与开发

Python网络编程详解&#xff1a;Socket套接字的使用与开发 1. 引言 网络编程是现代应用开发中不可或缺的一部分。通过网络编程&#xff0c;我们可以实现不同设备之间的通信和数据交换&#xff0c;为用户提供更加丰富的服务和体验。Python作为一种简洁而强大的编程语言&#x…

Java 模块化Modularity- 了解与测试

1. java9后JDK后目录的变化 不见了jre,新增了jmods目录。 1&#xff09;为什么不见了jre&#xff1f; 新版JDK提供了 jlink工具&#xff0c;使用它构建一个包含jre镜像的应用程序。 就是可以打包一个引用程序内部已经包含完整或部分jre&#xff0c;可以直接运行。 2&#xf…

MP的开发流程

MP的开发流程 1、添加依赖 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.ap…

【李宏毅 DLHLP 深度学习人类语言处理 HW1】

李宏毅 DLHLP 深度学习人类语言处理 HW1 相关资料HW1更多尝试1, 加深encoder:4层LSTM2, 加深encoder(4层LSTM)和加深decoder(2层LSTM)3, cnn代替vgg4, 再次加深decoder(4层LSTM) 语音小白在网上没有找到这门课的作业分享&#xff0c;那就记录一下自己的作业吧。 相关资料 课程…

4. 深度生成模型-扩散模型(基于扩散的生成模型与分数匹配的变分视角)

“基于扩散的生成模型”与“分数匹配”的变分视角 1. 介绍1.1. 变分自动编码器1.2. 基于扩散的建模1.3. 主要内容2. 基于得分的随机微分方程生成建模基于离散时间扩散的生成模型和分数匹配方法在高维图像数据建模方面显示出了良好的效果。 最近,Song等人(2021)表明,通过学…

基于SpringBoot+Vue的学习平台设计与实现(源码+LW+部署文档等)

博主介绍&#xff1a; 大家好&#xff0c;我是一名在Java圈混迹十余年的程序员&#xff0c;精通Java编程语言&#xff0c;同时也熟练掌握微信小程序、Python和Android等技术&#xff0c;能够为大家提供全方位的技术支持和交流。 我擅长在JavaWeb、SSH、SSM、SpringBoot等框架…

小程序使用echarts

参考文档&#xff1a;echarts官网、echarts-for-weixin 第一步引入组件库&#xff0c;可直接从echarts-for-weixin下载&#xff0c;也可以从echarts官网自定义生成&#xff0c;这里我们就不贴了组件库引入好后&#xff0c;就是页面引用啦&#xff0c;废话不多说&#xff0c;直…

tinkerCAD案例:23.Tinkercad 中的自定义字体

tinkerCAD案例&#xff1a;23.Tinkercad 中的自定义字体 原文 Tinkercad Projects Tinkercad has a fun shape in the Shape Generators section that allows you to upload your own font in SVG format and use it in your designs. I’ve used it for a variety of desi…

Ansible最佳实践之Playbook使用过滤器处理网络地址

写在前面 使用过滤器检查、验证和操作包含网络信息的变量理解不足小伙伴帮忙指正 傍晚时分&#xff0c;你坐在屋檐下&#xff0c;看着天慢慢地黑下去&#xff0c;心里寂寞而凄凉&#xff0c;感到自己的生命被剥夺了。当时我是个年轻人&#xff0c;但我害怕这样生活下去&#xf…

Blazor前后端框架Known-V1.2.8

V1.2.8 Known是基于C#和Blazor开发的前后端分离快速开发框架&#xff0c;开箱即用&#xff0c;跨平台&#xff0c;一处代码&#xff0c;多处运行。 Gitee&#xff1a; https://gitee.com/known/KnownGithub&#xff1a;https://github.com/known/Known 概述 基于C#和Blazor…

Linked List

文章目录 链表定义专业术语代码链表分类常见算法链表创建和常用算法 链表总结 链表 补充知识 typedef 给类型换名字&#xff0c;比如 typedef struct Student {int sid;char name[100];char sex; }ST;//ST就代表了struct Student //即这上方一大坨都可以用ST表示 //原先结构体…

Springer独立出版 | 2023年触觉与虚拟现实国际会议(ICHVR 2023)

会议简介 Brief Introduction 2023年触觉与虚拟现实国际会议(ICHVR 2023) 会议时间&#xff1a;2023年12月15日-17日 召开地点&#xff1a;中国北海 大会官网&#xff1a;www.ichvr.org 2023年触觉与虚拟现实国际会议(ICHVR 2023)由东南大学、上海交通大学联合主办&#xff1b;…

通过String字符生成base64编码

* base64转图片 //对字节数组字符串进行Base64解码并生成图片 * param base64str base64码 * return // param savePath 图片路径private static final String savePath"image_ver\\verifyCode"; 判断是否为base64编码 public static void mainDD…

PHP使用Redis实战实录4:单例模式和面向过程操作redis的语法

PHP使用Redis实战实录系列 PHP使用Redis实战实录1&#xff1a;宝塔环境搭建、6379端口配置、Redis服务启动失败解决方案PHP使用Redis实战实录2&#xff1a;Redis扩展方法和PHP连接Redis的多种方案PHP使用Redis实战实录3&#xff1a;数据类型比较、大小限制和性能扩展PHP使用Re…

ajax概述

目录 1.什么是ajax 2.ja原生ajax 3.jQuery框架的ajax 4.综合案例 1.什么是ajax Ajax 即"Asynchronous Javascript And XML"&#xff08;异步 JavaScript 和 XML&#xff09;&#xff0c;是指一种创建交互式网页应用的网页开发技术。Ajax 异步 JavaScript 和 XML&…

多线程(JavaEE初阶系列5)

目录 前言&#xff1a; 1.什么是定时器 2.标准库中的定时器及使用 3.实现定时器 结束语&#xff1a; 前言&#xff1a; 在上一节中小编给大家介绍了多线程中的两个设计模式&#xff0c;单例模式和阻塞式队列模式&#xff0c;在单例模式中又有两种实现方式一种是懒汉模式&a…

初识TDMQ

目录 一&#xff1a;需求背景二&#xff1a;相关文档三&#xff1a;验证TDMQ广播消息 一&#xff1a;需求背景 目前公司需要将决策引擎处理的结果&#xff0c; 一部分数据交给下游分析/入黑/通知等功能。因此就需要决策引擎生产结果让多方下游去消费。 而我需要实现下游的一部…

微信小程序转抖音小程序的坑:The component <xxx> used in pages/xxx/xxx is undefined

微信小程序组件定义在根目录的 app.json 中了&#xff0c;在抖音小程序中出现找不到的情况。 在需要用到组件的 pages 目录中页面文件夹的 json "usingComponents": {} 大括号中添加页面使用的组件&#xff0c;即可使用...

STM32使用HAL库BH1750光照度传感器

开发环境 单片机&#xff1a;STM32F103C8T6 光照度传感器&#xff1a;BH1750 IDE&#xff1a;KEILSTM32CUBEMX 单片机配置 1、STM32CUBEMX BH1750代码 1、头文件 /* ************************************************* BH1750光照数据计算&#xff08;LUX&#xff09; …