当前位置: 首页 > news >正文

MongoDB常见语句

目录

1. 增删改

2. 评估查询运算符

 3. 比较查询运算符

4. 逻辑运算符

5. 元素运算符

6. 数组查询运算符

7. 字段更新操作符

8. 数组更新操作符

10. 聚合管道


1. 增删改


db.getCollection("Y").insert({"age": 10,name: "ces5"});//增 db.getCollection("Y").insertMany([{"age": 10,name: "ces5"},{"age":11,name:"ces6"}]); //批量新增


db.getCollection("Y").remove({"age":8});//删,deleteOne效果一样 db.getCollection("Y").deleteMany({"age":10});//批量删除


db.getCollection("Y").update({"age": 10},{set:{name:"测试2"}});//批量改

2. 评估查询运算符

`$mod取模

db.getCollection("Y").find({"age":{$`mod:[8,1]}}); //取除8余1的数据

`$regex正则用法

db.getCollection("Y").find({des:{options:"i"}})
db.getCollection("Y").find({des:{options:'si'}})
db.getCollection("Y").find({des:{options:'x'}})

1.^s表示以s开头,s$表示以s结束
2.$options:"i"表示不区分大小写,$options:"m"表示换行符,$options:'x'表示忽略空白字符   
3.m.*line表示匹配value中包含m且之后为任意字符且包含line字符的字符串。“si”表示包含换行符且不区分大小写

 3. 比较查询运算符

gte:大于等于
db.getCollection("Y").find({"age":{gte:8}}); //查询age大于等于8的数据

lte:小于等于
db.getCollection("Y").find({"age":{lte:8}}); //查询age小于等于8的数据

ne:不等于
db.getCollection("Y").find({"age":{ne:8}}); //查询age不等于8的数据

nin:不包含
db.getCollection("Y").find({"age":{nin:[7,8]}});//查询age不包含7,8的数据
注意这里是数组形式

4. 逻辑运算符

`$and

db.getCollection("Y").find({exists:true}}]});//查询age=10且des字段存在的数据

`$or

db.getCollection("Y").find({in:[7,9]}},{"des":{$`exists:true}}]});//查询age=7,9或者des字段存在的数据

`$not

db.getCollection("Y").find({"age":{gt:10}}});//组合使用,查询age不大于10的数据 db.getCollection("Y").find({"des":{$`not:/^M.*/}});//单独配合正则使用,查询des值不是以M开头的value数据

`$nor

db.getCollection("Y").find({gt:10}}]});//查询name!=ces1和age小于等于10的数据
执行逻辑NOR运算,指定一个至少包含两个表达式的数组,选择出都不满足该数组中所有表达式的文档

5. 元素运算符

`$type

db.getCollection("Y").find({age:{$`type:2}});//查询age类型为string类型的数据,具体对应值看链接

`$exists

db.getCollection("Y").find({"des":{$`exists:true}});//查询des的value值存在的数据

6. 数组查询运算符

`$all

db.ces.find({age:{$`all:[10,11]}});//查询age为10且11的数据,并集必须都满足

`$elemMatch

db.ces.find({"name": {"$`elemMatch":{"name1":"小红","relationship": 0}}})//查询层级下数据组合,等价于
db.ces.find({"name.name1":"小红",:"name.relationship":0})

`$size:匹配数组元素个数

db.ces.find({"age":{$`size:2}});//匹配符合size大小的数组数据

7. 字段更新操作符

`$mul

db.getCollection("ces").updateMany({hi:10},{$`mul:{age:2}})//批量修改将hi为10的数据age全部乘以2

`$max:仅当更新值大于现有字段值时才更新该字段

db.getCollection("ces").update({"age":22},{$`max:{"hi":11}});//更新条件为将需更新的值更新为大于当前值的值,小于当前值则不更新。日期格式也是如此

$min:仅当更新值小于现有字段值时才更新该字段

`$set

db.getCollection("ces").update({"age":22},{min和$`max好用,不做任何限制

`$inc

db.getCollection("ces").update({"age":22},{$`inc:{"hi":12}});//给指定的hi增加12,可批量操作

`$rename

db.getCollection("ces").update({"hi":100},{$`rename:{name:"name1"}});//重命名字段名,不修改里面的值

`$unset

db.getCollection("ces").updateMany({"hi":100},{$`unset:{name2:"ces"}});//删除name2=ces的字段,是删除不是置null

8. 数组更新操作符

`$addToSet

db.getCollection("ces").update({age:188},{addToSet:{ces:["a2"]}这种写法会录入成"ces":[["a2"]]这种两层数组形式

`$each

db.getCollection("ces").update({age:188},{each:["a2","b1"]}}});//配合$`addToSet使用,可以一次性增加多个值,已存在的值不再重复增加

`$push

db.getCollection("ces").update({age:188},{addToSet类似

`$sort

db.getCollection("ces").update({age:2},{each:[{a:5},{a:6}],push:{ces:{sort:1}}});
db.getCollection("ces").update({age:2},{each:[],$`sort:-1}}});只使用sort进行排序更新
查询使用:db.ces.find({}).sort({"age":-1}),-1倒序,1正序

`$pull

db.getCollection("ces").update({age:2},{$`pull:{ces:3}});//将ces中value=3删除

`$pullAll

db.getCollection("ces").update({age:2},{$`pullAll:{ces:[{a:5},2]}});//批量删除

10. 聚合管道

limit+skip
db.ces.find({}).limit(2).skip(1);//等价mysql:LIMIT 1,2(从角标1开始查询2条数据)

`$unwind

db.ces.aggregate([{age"}]);//将age中数组和文档类型的value值拆分显示,其余的不动

`$sample

db.ces.aggregate({$`sample:{size:4}});//随机返回四个数据

`$match

db.ces.aggregate([{gte":10,"$`lte":20}}}]);//match相当于where,后面加查询语句

`$project

db.ces.aggregate({age"}});//从文档中根据条件查询显示,0表示不展示,1表示展示,将age重命名为reage展示\ ==四则远算:加法subtract、乘法divide、求模project:{_id:0,name:1,hi:{hi",2]}});//将hi的值*2显示
db.ces.aggregate({add:["age"]}});//将hi和age值相加显示

相关文章:

  • dsp的主码流,子码流是指什么,有什么区别和作用
  • 实践001-Gitlab基础项目准备
  • [MySQL] 事务管理(一) 事务的基本概念
  • Python基础知识(基础语法二)
  • 【ROS2】行为树 BehaviorTree(六):各种各样的节点
  • 循环神经网络 - 扩展到图结构之递归神经网络
  • AI核心概念之“Function Calling” - 来自DeepSeek
  • 4-15记录(冒泡排序,快速选择排序)
  • 电路(b站石群老师主讲,持续更新中...)
  • OpenGL学习笔记(几何着色器、实例化、抗锯齿)
  • Spring 是如何解决循环依赖的
  • 火山引擎旗下防御有哪些
  • 东方博宜OJ ——2395 - 部分背包问题
  • 游戏引擎学习第228天
  • Mysql的查询
  • 2021-10-29 C++按天数返回年月日,按年月日求第几天。
  • Android 项目 Camera 问题:Fail to connect to camera service
  • std::condition_variable的使用说明(详细解释和使用示例)
  • YOLOv3损失函数与训练模块的源码解析
  • Web:Swagger 生成文档后与前端的对接
  • 首届中国—海湾阿拉伯国家合作委员会和平利用核技术论坛在成都召开
  • 人民日报头版开新栏:收官之年干劲满,决战决胜勇争先
  • 再现逆转!蒯曼击败伊藤美诚晋级澳门世界杯女单决赛
  • “杭州六小龙”爆火出圈后,浙江高规格部署人工智能发展
  • 成了“一日顶流”又能如何?
  • 美国防部宣布整合驻叙美军部队,将减少至不足千人