【mongo】一个字段有两个条件进行查询

条件:查询status:2,has_pay:true,amount:不等于0,type:A或者空(type类型有4个,分别是A、B、C、以及部分字段为空)的订单

反向查询:

db.order.find({ "status": NumberInt(2), "has_pay": true, "amount": { $ne: NumberInt(0) },$and: [ { "type":{ $ne: "C" } }, { "type": { $ne: "B"} } ]})

或者

db.order.find({ "status": NumberInt(2), "has_pay": true, "amount": { $ne: NumberInt(0) }, $nor: [ { "type": "C" }, { "type": "B" } ] })

正向查询:

db.order.find({ "status": NumberInt(2), "has_pay": true, "amount": { $ne: NumberInt(0) }, $or: [ { "type": "A" }, { "type": null } ] })

原文地址:https://www.cnblogs.com/Calinayc/p/11551762.html

时间: 2024-11-08 20:55:57

【mongo】一个字段有两个条件进行查询的相关文章

MySQL数据库一个字段对应多个值得模糊查询

当一个字段想模糊查询出多个字段的时候,正常情况下一般会这么作 1 select * from a where name like 'a%' or name like 'b%' ....or ...; 但是上面的情况只能对应少量的模糊查询值,过多之后再后台开发的时候会出现非常麻烦的sql语句拼接 这时我们可以采用正则表达式进行匹配 1 select * from a where name regexp'a|b|...'; 如果各位大神有更好的方法,请在下面留言!

sqlserver 一个字段分成两个字段 截取,保存

Ma,LeiTo(Ma,lT) 分割后为 姓       名 Ma,LeiTo  Ma,lT SELECT LEFT(作者, CHARINDEX('(', 作者) - 1) AS 姓 , replace( STUFF(作者,1, CHARINDEX('(', 作者) , ''),')','') AS 名 ,* FROM 作者表

ThinkPHP 条件是一个表里面的两个字段比较

ThinkPHP 条件是一个表里面的两个字段比较 今天群里有人问,thinkphp框架,条件是一个表里的两个字段,怎么查询. 然后就做了下测试: 比如查询出 手机号就是微信号 的用户: (1)首先,正常的sql语句应该是这样的: SELECT `id`,`name`,`tel`,`weixin` FROM `user` WHERE `tel` = `weixin` 然后在thinkphp框架中测试: (2)当where条件是字符串时,肯定是可以的: M('user')->where('`tel`

thinkjs——一个字段一种数字代表两种状态

问题来源: 现有一张company数据表,其中有一个字段state(-2:待审核:-1:禁用:0:正常:1:会员过期:),一般而言,在前期设计数据表的时候,会将每种状态下都用一种特定的数字代表,但是这里起初并没有将-2代表的待审核和拒绝状态分开,即-2代表着两种状态:待审核以及拒绝.现要求在字段state不增加值的情况下,根据company中的另外一个字段refuse是否为空来区分是待审核或者是拒绝. 分析: 拿到需求,先分析一下:在原来-2的基础之上,在查询条件中增加refuse条件即可. 解

两张表A和B,各有一个字段,更新时间A.MODIFIED_TM和B.MODIFIED_TM,A表为主表,更新时间不为空,但是B表更新时间可能为空,现在要取A、B两表时间最新的那个,B.MODIFIED

问题描述: 两张表A和B,各有一个字段,更新时间A.MODIFIED_TM和B.MODIFIED_TM,A表为主表,更新时间不为空,但是B表更新时间可能为空,现在要取A.B两表时间最新的那个,B.MODIFIED_TM若为空就取A.MODIFIED_TM,例如: 表A ID    MODIFIED_TM 1     2013/3/10 18:07:12 2     2013/4/10 18:07:12 3     2013/5/10 18:07:12 表B ID    MODIFIED_TM 1

【语法】SQL中的case when then else end用法-解决一个字段根据条件取不同值

Case具有两种格式.简单Case函数和Case搜索函数. --简单Case函数 CASE sex WHEN '1' THEN '男' WHEN '2' THEN '女' ELSE '其他' END --Case搜索函数 CASE WHEN sex = '1' THEN '男' WHEN sex = '2' THEN '女' ELSE '其他' END 这两种方式,可以实现相同的功能.简单Case函数的写法相对比较简洁,但是和Case搜索函数相比,功能方面会有些限制,比如写判断式. 还有一个需要

linq查询一个字段的总和

(from s in dc.StockInItem   //所要查询单表 join si in dc.StockIn           //联合的表 on s.StockInID equals si.StockInID     //两个表联合的相同条件 where (s.ColorsID == int.Parse(colorID) && s.SizesID == int.Parse(sizeID) && s.ProductID == int.Parse(ProtectID

thinkphp获取特定字段的两种方法

thinkphp getField( )和field( ) 2014年10月05日 ⁄ 综合 ⁄ 共 1509字 ⁄ 字号 小 中 大 ⁄ 评论关闭 做数据库查询的时候,比较经常用到这两个,总是查手册,记不住,现在把它总结下,希望以后用的时候不查手册了. 不管是用select 查询数据集,还是用find 查询数据,常配合连贯操作where.field.order等一起使用.  field():用于定义要查询的字段(支持字段排除) 用法:field($field , $except=false)

sql把两值之和当作条件进行查询

目的:把表中两个字段之和作为where条件进行过滤查询 //查询在没有过期的记录select a,b from test where a+b>now();// a:存入时间 b:有效期时间段 进行以上查询后,sql会报错. 但是,只要把上面的sql放入到代码中,将now()换成对应语言所获取当前时间戳的方法(如php中 time() ),执行,完美OK! 分析:在sql中直接这样运行,sql会把now()理解为当前的格式化时间,因此,在a+b后直接理解成了普通字符串,并非所理解的时间戳概念,所以