为什么先讲查询,DML最后讲呢?
在SQL中,UPDATE和DELETE后面都跟了WHERE,所以在Mongodb中,先把查询字段讲清楚,其他操作就好理解了。
INSERT INTO table() VALUES()
SELECT * FROM table WHERE ...
UPDATE table SET ... WHERE ...
DELETE FROM table WHERE...
- 全文档查询
//查询
//SQL:SELECT 返回字段 FROM TABLE WHERE 查询条件
//关注查询返回字段和查询条件
//Mongo: db.集合名.find(查询条件,返回字段)
//以下三条语句,返回集合中所有内容
var 查询条件 = {} //如果为空,相当于select * from table
var 返回字段 = {}
db.mycollection.find(查询条件,返回字段)//和下面语句等价
db.mycollection.find();//语句分号结束,参数文档为空可以不写
- 加一个条件后查询
//select * from mydb where role=student
var 查询条件 = {"role":"student"}
//等价于var 查询条件 = {"role":{$eq:"student"}}
var 返回字段 = {}
db.mycollection.find(查询条件,返回字段)
- 比较操作符
//比较操作符
//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(查询条件,返回字段);
- 逻辑操作符 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(查询条件,返回字段);
- 逻辑操作符 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(查询条件,返回字段);
- 逻辑操作符 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是逻辑运算,不是比较运算,是对条件取反集
- 元素操作符 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);
- 查询帮助
db.mycollection.help();
db.mycollection.find().help();
本站资源均来自互联网,仅供研究学习,禁止违法使用和商用,产生法律纠纷本站概不负责!如果侵犯了您的权益请与我们联系!
转载请注明出处: 免费源码网-免费的源码资源网站 » MongoDB Shell 基本命令(二)操作符
发表评论 取消回复