不等于  $nq

1
2
SQL : select * where != 3
NOSQL : db.goods.find({cat_id:{$ne:3 }},{cat_id:1,id:0});

NOSQL后面的这个cat_id:1就是显示,id:0就是不显示的意思

高于3000元的商品

1
db.goods.find({shop_rice:{$gt:3000},{goods_name:1,shop_rice:1});
运算符 对应mysql运算符
$gt >
$gte >=
$in in
$lt <
$lte <=
$ne !=
$nin not in
$all 无对应项,指数组所有单元匹配

in的操作

1
db.goods.find({cat_id:{$in:[4,11]}},{cat_id:1,cat_name:1});

all

1
2
3
db.stu.insert({name:'lily',hobby:['a','b','c']});
db.stu.insert({name:'lucy',hobby:['b','c','d']});
db.stu.find({hobby:{$all:['b','c']}}); // 这个会查处两条出来,因为两条里面都有'b','c'

逻辑运算符

名称 描述
$or or
$and and
$not not
$nor 无对应项,“所有举例条件都不成功,则为真”

$and用法

db.goods.find({$and:[{shop_price:{$lt:3000},{shop_price:{$gt:2000}}]},{goods_name:1,goods_count:1});

$nin的用法

1
db.goods.find({$and:[{cat_id:{$ne:3}},{cat_id:{$ne:11}}]},{goods_name:1,id:1});

等同于

1
db.goods.find({$and:[$nin:[3,11]},{goods_name:1,id:1});

$nor用法

既不是3,也不是4

1
db.goods.find({$nor:[{cat_id:3},{cat_id:4}]},{goods_name:1,goods_price:1});

元素运算符

名称 描述
$exists 某列存在则为真
$mod 满足某求余条件则为真
$type 数据为某类型则为真

good_id除5取余,余数为0 的被选择出来

1
db.goods.find({good_id:{$mod:[5,0]}},{goods_name:1,goods_number:1});

找出文档中存在age字段的记录

1
db.stu.find({age:{$exists:1]});

类型判断有个列表

1
db.foo.find({age:{$type:2}});

$where

这个关键字的用法是将mongodb存储的二进制先转换为json格式的数据,然后再调用js的引擎来执行js代码,效率比较低,不推荐使用,好处是表达式可以非常的复杂,如果难以实现又不追求效率就可以考虑这种写法

1
db.goods.find({$where:'this.shop_price>3000'},{shop_price:1,goods_name:1});

加上多种条件后复杂的判断

1
db.goods.find({$where:'this.shop_price<3000 && this.shop_price > 2000 || this.price = 1000'},{shop_price:1,goods._name:1});

$regex 正则匹配为真     效率不高

db.goods.find({goods_name:{$regex:/^诺基亚.*/}},{goods_name:1,goods_id:1});

数据库-mongodb-高级查询表达式的更多相关文章

  1. mongoDB 高级查询语法

    http://www.cnblogs.com/ITAres/articles/2084794.html本文参考自官方的手册:http://www.mongodb.org/display/DOCS/Ad ...

  2. mongoDB高级查询$type4array使用解析

    今天在使用mongoDB高级查询$type:符号 -- 4代指Array类型发现一个问题. $type符号: $type操作符是基于BSON类型来检索集合中匹配的数据类型,并返回结果. 下面是mong ...

  3. MongoDB高级查询详细

    前言 前几篇,老玩家绕道即可,新手晚上闲着也是蛋疼,不如把命令敲一边,这样你就会对MongoDB有一定的掌握啦.如果没有安装MongoDB去看我的上一篇博客  MongoDB下载安装与简单增删改查 前 ...

  4. mongodb高级查询

    前几篇,老玩家绕道即可,新手晚上闲着也是蛋疼,不如把命令敲一边,这样你就会对MongoDB有一定的掌握啦.如果没有安装MongoDB去看我的上一篇博客  MongoDB下载安装与简单增删改查 前奏:启 ...

  5. Sql Server数据库设计高级查询

    -------------------------------------第一章  数据库的设计------------------------------------- 软件开发周期:     (1 ...

  6. MongoDB高级查询用法大全

    转载 http://blog.163.com/lgh_2002/blog/static/440175262012052116455/ 详见官方的手册: http://www.mongodb.org/d ...

  7. Mongodb 基础 查询表达式

    数据库操作 查看:show dbs; 创建:use dbname; // db.createCollection('collection_name');    隐式创建,需要创建的数据库中有表才表示创 ...

  8. SQL数据库— <3>高级查询、常用函数 --摘录网络

    SQL Server T-SQL高级查询 高级查询在数据库中用得是最频繁的,也是应用最广泛的. Ø 基本常用查询 --select select * from student; --all 查询所有 ...

  9. Mongodb高级查询【二】

    上一篇文章,写了mongodb常规操作,继续写入,本章主要讲高级查询,文本,聚集,大数据查询. Mongodb的查询语法是很多的,是NOSQL队伍中比较丰富的一个.当然有很多查询跟关系型查询无法相比. ...

  10. 10月17日下午MySQl数据库CRUD高级查询

    高级查询:1.连接查询 #适用于有外键关系的  没有任何关系没法用select * from Info,Nation #同时查询这俩表并把两表每个数据相互组合,形成笛卡尔积 select * from ...

随机推荐

  1. VmBox硬盘容量调整

    硬盘容量修改为15*1024MB. VBoxManage.exe modifyhd "F:\VirtualBox\magiclinux.vdi"   --resize 15360 ...

  2. 逻辑运算0==x和x==0具体解释

    看很多大牛写的程序经常看到if(0==x){运行体},而自己写的程序常用if(x==0){运行体}.刚開始的时候我还非常自信的觉得这样的表达方式是等价的,大牛们仅仅是为了显摆下与众不同的格调.当读到C ...

  3. Android——build.prop 解析【转】

    本文转载自:http://blog.csdn.net/lengyue1084/article/details/77637354 一.概念 在Android设备shell终端可以看到/system目录下 ...

  4. 国外物联网平台初探(五) ——Exosite Murano

    定位 Murano是一个基于云的IoT软件平台,提供安全.可扩展的基础设施,支持端到端的生态系统,帮助客户安全.可扩展地开发.部署和管理应用.服务以及联网产品. 功能 Murano平台简化了整个IoT ...

  5. ArrayList、Vector和LinkedList的区别

    ArrayList.Vector和LinkedList类均在java.util包下,均为可伸缩数组,即可以动态改变长度的数组 ArrayList和Vector都是基于存储元素的Object[] arr ...

  6. ShowDialog函数与Form的Activated函数同时使用的陷阱

    当我们需要在form启动之时,焦点显示在特定的控件“btn”上,我们可以先将btn的TabIndex设为0,然后要确保它visible=true,最后在Form的Activated事件方法中btn.G ...

  7. 试图ddms 如果丢失adv链接解决办法!

    点击如下图菜单 重启链接adv即可显示.

  8. in 与 exist , not in 与 not exist

    in和exists in 是把外表和内表作hash 连接,而exists是对外表作loop循环,每次loop循环再对内表进行查询.一直以来认为exists比in效率高的说法是不准确的. 如果查询的两个 ...

  9. linux中errno使用(转)

    当linux中的C api函数发生异常时,一般会将errno变量(需include errno.h)赋一个整数值,不同的值表示不同的含义,可以通过查看该值推测出错的原因,在实际编程中用这一招解决了不少 ...

  10. 优动漫PAINT如何打开图形文件

    优动漫PAINT也就是我们常说的clip studio paint(CSP)的中文版本,在优动漫PAINT软件中打开文件的方式有很多,您可以直接拖拽至优动漫PAINT界面或者文档窗口,也可以执行文件菜 ...