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

MongoDB Shell 基本命令(二)操作符

为什么先讲查询,DML最后讲呢?

在SQL中,UPDATE和DELETE后面都跟了WHERE,所以在Mongodb中,先把查询字段讲清楚,其他操作就好理解了。

INSERT INTO table() VALUES() 
SELECT * FROM table WHERE ...
UPDATE table SET ... WHERE ...
DELETE FROM table WHERE...
  1. 全文档查询
//查询
//SQL:SELECT 返回字段 FROM TABLE WHERE 查询条件
//关注查询返回字段和查询条件
//Mongo: db.集合名.find(查询条件,返回字段)
//以下三条语句,返回集合中所有内容
var 查询条件 = {} //如果为空,相当于select * from table
var 返回字段 = {}
db.mycollection.find(查询条件,返回字段)//和下面语句等价
db.mycollection.find();//语句分号结束,参数文档为空可以不写
  1. 加一个条件后查询
//select * from mydb where role=student
var 查询条件 = {"role":"student"} 
//等价于var 查询条件 = {"role":{$eq:"student"}}
var 返回字段 = {}
db.mycollection.find(查询条件,返回字段)
  1. 比较操作符
//比较操作符
//select * from mydb where score>70
var 查询条件 = {"score":70} //合法,表示score=70
var 查询条件={"score":{$eq:70}};//合法
var 查询条件 = {"score">70} //不是一个文档的合法结构{key:value}
var 查询条件 = {"score":>70}//不是一个合法的值类型 >70 = {$gt:70}
var 查询条件 = {"score":{$gt:70}}; //>70  -> {$gt:70}
var 查询条件 = {"score":{$lt:70}}; //<70  -> {$lt:70}}
var 查询条件 = {"score":{$gte:70}};//>=70 -> {$gte:70}
var 查询条件 = {"score":{$lte:70}};//<=70 -> {$lte:70}}
var 查询条件 = {"score":{$ne:70}}; //!=70 -> {$ne:70}}
//返回 mycollection 集合中所有 score 字段不等于 70 的文档
var 查询条件 = {"score":{$in:[70,80]}}; //in(70,80) -> {$in:[70,80]}
var 查询条件 = {"score":{$nin:[70,80]}}; //not in(70,80) -> {$nin:[70,80]} 除了那两条记录外的所有记录
var 返回字段 = {};
db.mycollection.find(查询条件,返回字段);
  1. 逻辑操作符 AND
//多个条件之间可以使用逻辑操作符
//查询2022级1班的同学信息
//写法一
var 查询条件 = {"grade":"2022","class":"1"};//养成习惯,所有的key打上引号
var 返回字段 = {};
db.mycollection.find(查询条件,返回字段);//写法二:使用$AND操作符 编程时可能会用到
var 查询条件1 = {"grade":"2022"};
var 查询条件2 = {"class":"1"};
var 查询条件 = {$and:[查询条件1,查询条件2]}
db.mycollection.find(查询条件,返回字段);
  1. 逻辑操作符 OR
//使用$OR操作符
//查询1班或者2班学生信息
//方式一
var 查询条件1 = {"class":"1"};
var 查询条件2 = {"class":"2"};
var 查询条件 = {$or:[查询条件1,查询条件2]}
db.mycollection.find(查询条件,返回字段);
//方式二
//也可以使用$in操作符 如果有100个班级,用in操作符更方便,直接写在数组中即可
var 查询条件 = {"class":{$in:["1","2"]}};
var 返回字段 = {};
db.mycollection.find(查询条件,返回字段);
  1. 逻辑操作符 NOT
// NOT $not
//var 查询条件 = {"score":{$ne:70}}; //!=70 -> {$lt:70}}
var 查询条件 = {"score":{$lte:70}};//<=70 -> {$lte:70}}
var 查询条件 = {"score":{$not:{$gt:70}}};
var 返回字段 = {};
db.mycollection.find(查询条件,返回字段);
//注意:$lte 不等价于 $not:{$gt:}
//$not是逻辑运算,不是比较运算,是对条件取反集
  1. 元素操作符 exists、type
  • 判断字段是否存在:{字段名:{$exists:true|false}}

    e x i s t s : 0 ,表示要查找 ‘ s c o r e ‘ 字段 ∗ ∗ 不存在 ∗ ∗ 的文档, exists:0,表示要查找 `score` 字段 **不存在** 的文档, exists:0,表示要查找score字段不存在的文档,exists:1表示存在的字段文档

//查询有成绩(score)的记录
var 查询条件 = {"score":{$exists:1}};//$exists:1表示存在,0表示不存在
var 返回字段 = {};
db.mycollection.find(查询条件,返回字段);//查询成绩存在,并且成绩小于70的记录
var 查询条件1 = {"score":{$exists:1}};
var 查询条件2 = {"score":{$lt:70}}};
var 查询条件 = {$and:[查询条件1,查询条件2]};
var 返回字段 = {};
db.mycollection.find(查询条件,返回字段);
  • 查询时,type后面可以跟数字/对应的类型
//查询score是字符串类型的记录 {记录:{$type:类型编码或别名}}
var 查询条件 = {"score":{$type:2}};
//var 查询条件 = {"score":{$type:"string"}};
var 返回字段={};
db.mycollection.find(查询条件,返回字段);
  • 多个查询组合
var 查询条件1 = {"score":{$exists:1}};
var 查询条件2 = {"score":{$type:1}};
var 查询条件3 = {"score":{$gt:70}};
var 查询条件={$and:[查询条件1,查询条件2,查询条件3]};
var 返回字段={};
db.mycollection.find(查询条件,返回字段);
  • 返回字段,1显示字段,0不显示字段
var 查询条件 = {};
var 返回字段1 = {_id:0, firstname:1, lastname:1,score:1};
var 返回字段2 = {firstname:0, lastname:0,score:0};
db.mycollection.find(查询条件,返回字段2);
  1. 查询帮助
db.mycollection.help();
db.mycollection.find().help();

http://www.mrgr.cn/news/55261.html

相关文章:

  • IDEA如何查看所有的断点(Breakpoints)并关闭
  • 基于Multisim8路彩灯循环控制电路设计与仿真
  • 云原生介绍
  • 代码随想录算法训练营第三十一天|56. 合并区间、738.单调递增的数字
  • 【算法题】数组中只出现一次的两个数字
  • Vue3中ref和reactive的对比
  • Sigrity-Power SI如何使用Model Extraction模式提取电源网络的S参数和阻抗操作指导(一)
  • 探索CompletableFuture:高效异步编程的利器
  • C-自定义类型-联合和枚举
  • 数据库系统
  • 插件开发流程
  • HTTP Cookie深入解析
  • 从壹开始解读Yolov11【源码研读系列】——cfg:模型配置加载功能
  • DevExpress WPF中文教程:Data Grid的视图概述及主要功能一览
  • 【源码+文档】基于SpringBoot+Vue养老院管理系统
  • 写了十几年程序,今天才第一天知道什么是屎山代码
  • 【升华】python pandas库学习总结
  • onlyoffice docker启用jwt并生成jwt
  • 【OD】【E卷】【真题】【100分】数字排列(PythonJavaJavaScriptC++)
  • 关于 SpringBootTest 你必须知道的 - 登录认证在 Spring Boot 上的标准单元测试写法,看一眼就会怀孕。
  • c语言基础程序——经典100道实例。
  • On-Device Training Under 256KB Memory 端侧极端算力设备资源下的模型训练工作研究
  • 使用mvn命令导出依赖包
  • @Component 和 @Bean 的区别与联系
  • C++ 异步执行任务async()(补充)
  • 基于Java+SpringBoot+Vue的IT技术交流和分享平台