Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >mongoDB 逻辑运算符

mongoDB 逻辑运算符

作者头像
Leshami
发布于 2018-08-08 09:56:14
发布于 2018-08-08 09:56:14
1.5K00
代码可运行
举报
文章被收录于专栏:乐沙弥的世界乐沙弥的世界
运行总次数:0
代码可运行

在mongoDB中,逻辑运算也是较为常用的运算,这些逻辑运算通常包含与或非,取反,存在等等。本文描述mongoDB几类常用的逻辑运算符同时给出演示示例,供大家参考。

一、mongoDB中的几种逻辑运算符

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    $or       逻辑或
    $and      逻辑与
    $not      逻辑非
    $nor      逻辑or的取反
    $exists   存在逻辑
    $type     查询键的数据类型

二、演示逻辑运算

演示集合persons中用到的文档数据请参考:mongoDB 比较运算符

1. $or

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    Syntax: { $or: [ { <expression1> }, { <expression2> }, ... , { <expressionN> } ] } 

    db.persons.find( {$or : [{age:25},{email:"robinson.cheng@qq.com"}]})  //不同的键基于$or操作符的查询
    db.persons.find( {$or:[{age:25},{age:{$eq:27}}]})                     //相同的键基于$or操作符的查询
    db.persons.find( {age: {$in : [25,27]}})     //对于相同键的$or查询建议使用$in替换,如本查询替换上面的查询   

2. $and

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    Syntax: { $and: [ { <expression1> }, { <expression2> } , ... , { <expressionN> } ] }

    db.persons.find( {$and: [{age:{$gt:25}},{age:{$lt:30}}]})
    db.persons.find( {$and: [{age:{$gt:25}},{"score.c":75}]})        //嵌套文档作为$and查询条件        
    db.persons.find( {$and: [{age:{$gt:25}},{books:"MONGODB"}]})     //数组作为$and查询条件 

3. $not

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    Syntax: { field: { $not: { <operator-expression> } } }     

db.persons.find( { age: {$not : { $gt : 25 } } } )  //查询年龄不大于25对文档       

4. $nor

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    Syntax: { $nor: [ { <expression1> }, { <expression2> }, ...  { <expressionN> } ] }         

db.persons.find( {$nor : [ {age: { $gt : 25 } } ] } )                        //单个条件的$nor    
db.persons.find( {$nor : [ {age: { $gt : 25 } },{ books : "MONGODB" } ] } )  //查找age不大于25,并且书籍不包含MONGODB的文档
db.persons.find( {$or : [ {age: { $gt : 25 } },{ books : "MONGODB" } ] } )   //该查询与上正好相反,为上一个查询的补集

5. $exists

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    Syntax: { field: { $exists: <boolean> } }

    //moongoDB中的exists通常是用于判断是否有这个键,而不是SQL中的某个列上存在某个值

    db.users.insert({ename:"robin",age:25})            //创建一个新的集合
    db.users.insert({ename:"henry",age:25,add:"SZ"})   //添加一个列

    db.users.find()                                    //查询集合上的记录
    { "_id" : ObjectId("57d4e95d280c7afecd0250c9"), "ename" : "robin", "age" : 25 }
    { "_id" : ObjectId("57d4e96f280c7afecd0250ca"), "ename" : "henry", "age" : 25, "add" : "SZ" }

    db.users.find( { add : { $exists : true } } )      //查询add列存在的记录
    { "_id" : ObjectId("57d4e96f280c7afecd0250ca"), "ename" : "henry", "age" : 25, "add" : "SZ" }

    db.users.find( { add : { $exists : false } } )     //查询add列不存在的记录
    { "_id" : ObjectId("57d4e95d280c7afecd0250c9"), "ename" : "robin", "age" : 25 } 

    db.users.find({$and :[ { add:{ $exists:false } },{ age : 25 } ] } )  //复合条件
    { "_id" : ObjectId("57d4e95d280c7afecd0250c9"), "ename" : "robin", "age" : 25 }   

    db.users.insert({author:"Leshami",blog:"http://blog.csdn.net/leshami"})           

6. $type //基于类型的查询

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    { field: { $type: <BSON type number> | <String alias> } }
    //类似于C#/Java中的typeof

    db.users.insert({ename:"fred",age:undefined,add:"SZ"})   //age列为undefined
WriteResult({ "nInserted" : 1 })

    db.users.find({age:{$type:6}})
    { "_id" : ObjectId("57d4ed86280c7afecd0250cb"), "ename" : "fred", "age" : undefined, "add" : "SZ" }
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2016年09月27日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
常用 mongo 操作实际操练
查询数据的时候我们发现,mongodb 自动在我们的文档中加入了 _id 字段,这是一个主键,如果不自己设置的话,mongodb 为默认给我们加上,是一个 24 位的 uuid
阿兵云原生
2023/02/16
2940
mongoDB CRUD特性介绍
1、本文简要描述了mongoDB的CRUD的常规操作,并给出了示例演示 2、CRUD基本上等同于SQL数据库的增删改查 3、每一个操作都有更详细以及更丰富的用法,具体可参考官方文档
Leshami
2018/08/13
5160
mongodb系列(2)-基本的CURD的使用
MongoDB在插入一条数据后,会自动增加一个_id自动,作为主键,如果插入的文档省略了id字段,则会自动生产一个Object_id字段
爽朗地狮子
2022/10/21
5830
mongoDB 比较运算符
比较运算符是我们学习任何语言或系统中最为常见的运算符之一。mongoDB的比较运算符,跟Linux的差不多,只不过每一个比较运算符前面会带有符号,他们分别是$eq、$gt、$gte、$lt、$lte、$ne、$in、符号,他们分别是\$eq、\$gt、\$gte、\$lt、\$lte、\$ne、\$in、nin等,下面将对这几个运算符进行描述。 一、比较运算符 $eq = "=" $gt (greater than ) > $gte
Leshami
2018/08/13
1.2K0
MongoDB 部分索引(Partial Indexes)
a、部分索引就是带有过滤条件的索引,即索引只存在与某些文档之上 b、满足过滤条件的文档在查询时,其执行计划将使用该列上的索引,否则不会被使用 c、稀疏索引与部分索引的差异是一个是基于某些文档存在的列,一个是列上的某些匹配条件的值 d、可以基于某个列上创建索引,而在另外的列来使用过滤条件
Leshami
2018/08/08
1.8K0
MongoDB干货篇之查询数据
文章目录 1. MongoDB干货篇之查询 1.1. 准备工作 1.2. find() 1.2.1. 实例: 1.3. 查询内嵌文档 1.3.1. 完全匹配查询 1.3.2. 键值对查询 1.4. 查询操作符 1.4.1. 实例 1.4.2. $ne 1.4.3. slice 1.4.4. $exists 1.4.5. $or 1.4.6. $and 1.4.7. $in 1.4.8. $nin 1.4.9. $not 1.5. 迭代游标的查询 MongoDB干货篇之查询 准备工作 在开始之前我们应该
爱撒谎的男孩
2019/12/31
1.3K0
mongoDB 定长集合(capped collection)
大多数情况下,mongoDB中都是普通的集合,这些集合也称为动态集合,可以自动增长以容纳更多的数据。但这并不适合所有的场景。比如需要保存应用程序的某一个时间段日志,对于历史日志需要定期老化。这种情形下,定长集合就派上了用场。本文描述了定长集合的特性以及给出相关演示。 一、定长集合的特性 需要事先创建,创建时指定大小,即大小固定,后续不可以随意改变 新文档被插入到队列末尾 使用循环的方式老化最老的文档,即不支持从定长集合手动删除文档 数据被顺序写入到磁盘上的固定空间 固定集合不能被分片 由于覆盖特性,
Leshami
2018/08/13
9020
SQL与mongoDB对比及映射
mongoDB是最接近与关系型数据库的开源NoSQL数据库,几乎绝大多数常用的命令或语句在SQL中都可以找到相应的对应或映射。本文主要与MySQL做了些参照,供大家参考。
Leshami
2018/08/13
8470
MongoDB 学习笔记
感谢 Karl Seguin 编写的 The Little MongoDB Book 这本 MongoDB 入门书。
柳公子
2018/09/17
1.7K0
MongoDB第四期:SQL 与 MongoDB 映射(入门)
一、SQL与MongoDB术语概念对照 传统的关系数据库一般由数据库(database)、表(table)、记录(record)三个层次概念组成,MongoDB是由数据库(database)、集合(c
迪B哥
2017/08/04
1.3K0
mongodb进阶一之高级查询「建议收藏」
上篇文章我们讲了mongodb的crud基本操作 http://blog.csdn.net/stronglyh/article/details/46812579
全栈程序员站长
2022/07/08
5650
python操作mongodb数据库
(6) $push: 和 $ pushAll 都是向数组属性添加元素。# 好像两者没啥区别
bear_fish
2018/09/20
1.8K0
MongoDB-查询语句中逻辑运算符not、and、or、nor用法介绍
针对前面的$and、$or、$not的用法,大家可能见到过,但对于$nor操作,可能见的少一点,$nor简单的理解就是:多个条件中不满足其中的某一个。
小博测试成长之路
2022/12/02
1.7K0
MongoDB-查询语句中逻辑运算符not、and、or、nor用法介绍
mongoDB 文档查询
1、文档查询db.users.find()等价于db.users.find( {} ) 2、基于and运算符的多个组合条件可以省略and运算符的多个组合条件可以省略and,直接将条件组合即可 3、对于$and运算符内的条件,用[]括起来,相当于数组形式 4、对于数组查询,可以使用基于下标的方式精确配置特定的元素值 5、对于内嵌文档,可以使用”文档键.内嵌文档键”方式进行访问 6、对于数组内内嵌文档的方式,可以使用”数组名.下标.内嵌文档键”方式访问 7、对于哪些列名需要显示可以通过{ field1: <0|1>, … }来设定 8、本文参考:https://docs.mongodb.com/manual/tutorial/query-documents/
Leshami
2018/08/13
3.3K0
MongoDB操作&&注入漏洞&&未授权访问漏洞
注入不止有传统的SQL数据库,NoSQL型数据库也一样存在注入漏洞,在比赛中跟传统的注入相比也算新题型,不少同学可能还不太了解,本文向大家科普MongoDB数据库的常见操作以及攻击的方法——NoSQL注入和未授权访问
安恒网络空间安全讲武堂
2019/09/29
4.6K0
MongoDB初级入门
{ "_id" : "Mary", "sum_age" : 75 } { "_id" : "Jack", "sum_age" : 66 } { "_id" : "zhengyunamei", "sum_age" : 0 } { "_id" : "Tom", "sum_age" : 120 } { "_id" : "陈加兵", "sum_age" : 22 } { "_id" : "Lucy", "sum_age" : 66 } { "_id" : "郑元梅", "sum_age" : 22 }
爱撒谎的男孩
2018/06/07
1.3K0
MongoDB 复合索引
如下图所示,在集合的userid以及score列上创建一个复合索引,其中userid为升序,score为降序
Leshami
2018/08/13
3.2K0
MongoDB 复合索引
一文搞定 mongodb(学习笔记)
打开环境变量中的path,选择path双击,打开后点击“新建”,把bin目录的路径粘贴进去(我的是:E:\mongoDB\bin)
微客鸟窝
2022/04/08
5180
一文搞定 mongodb(学习笔记)
MongoDB 游标
MongoDB中的游标与关系型数据库中的游标在功能上大同小异。游标相当于C语言的指针,可以定位到某条记录,在MongoDB中,则是文档。因此在mongoDB中游标也有定义,声明, 打开,读取,关闭这么个过程。客户端通过游标,能够实现对最终结果进行有效的控制,诸如限制结果数量,跳过部分结果或根据任意键按任意顺序的组合对结果进行各种排序等。下文是针对MongoDB游标的具体介绍。 一、mongoDB游标介绍 db.collection.find()方法返回一个游标,对于文档的访问,我们需要进行游标
Leshami
2018/08/13
8710
MongoDB 文档字段增删改
//$set修改器最常用,等同于RDBMS update的set子句 //演示重用的的示例集合数据请参考:mongoDB 比较运算符
Leshami
2018/08/08
1.4K0
相关推荐
常用 mongo 操作实际操练
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验