之前我们探讨了mongodb的“增删改查”,要知道,我们的增删改其实都离不开查询表达式,所以查询表达式在mongodb是非常重要的。关于查询其实我们只是介绍了以小部分。
关于mongodb的查询表达式,我们要进行深一步的了解。

我们有一个数据集,是商城的商品信息:

下载链接:http://download.csdn.net/detail/u013517797/9726120

我们要把商城的商品信息插入到mongodb上,商品有以下字段:
goods_id 商品主键
cat_id 所在栏目
goods_name 商品名
goods_number 商品剩余库存数量
click_count 点击量
shop_price 本店价格
add_time 添加时间


我们创建一个商城数据库(shop),然后创建一个商品表(goods),将数据集
中的数据全部加入进去
(数据量比较大的时候控制台处理不了,所以大家把数据分三次插入进去!):

一共有id到32的数据,一共有31条数据。使用db.goods.fond();能查到31条数据说明我们数据全部插入了:

db.goods.find().count();指令统计查出数据的数量。

接下来开始深入学习查询表达式。
注:以下查询基于导入的商品表。

1.基础查询 where练习

查出满足以下条件的商品
1.1:主键为32的商品
db.goods.find({goods_id:32});


1.2:不属第3栏目的所有商品($nq)
$ne就是“!=”(不等于NotEqual)的意思
语法:{field:{$ne:value}}
作用:查filed列的值不等于value的文档
db.goods.find({cat_id:{$ne:3}},{cat_id:1,goods_name:1,_id:0});


1.3:本店价格高于3000元的商品($gt)
$gt就是“>”(大于great)的意思
语法:{filed:{$gt:value}}
作用:查filed列的值大于value的文档
db.goods.find({shop_price:{$gt:3000}},{goods_name:1,shop_price:1,_id:0});


1.4:本店价格低于等于100元的商品($lt)
$lt就是“<”(小于little)的意思
语法:{filed:{$lt:value}}
作用:查filed列的值小于等于value的文档(等于在后面加“e”即可,大于小于通用)
db.goods.find({shop_price:{$lte:100}},{goods_name:1,shop_price:1,_id:0});


1.5:取出第4栏目或第11栏目的商品($in)
$in就是“in”(位于)的意思
语法:{filed:{$in:[数组内容]}}
作用:查filed列的值位于数组[]中的文档
db.goods.find({cat_id:{$in:[4,11]}},{cat_id:1,goods_name:1,_id:0});


1.5.2:取出不在第4栏目或第11栏目的商品($nin)
$nin就是“notin”(不位于)的意思
语法:{filed:{$nin:[数组内容]}}
作用:查filed列的值不位于数组[]中的文档
db.goods.find({cat_id:{$nin:[4,11]}},{cat_id:1,goods_name:1,_id:0});


1.6:取出100<=价格<=500的商品($and)
$and就是“and”(与)的意思
语法:{$and:[{filed:value1},{filed:value2}...]}
作用:查filed位于value1与value2之间的文档
db.goods.find({$and:[{shop_price:{$gte:100}},{shop_price:{$lte:500}}]},{shop_price:1,goods_name:1,_id:0});


1.7:取出不属于第3栏目且不属于第11栏目的商品($and $nin和$nor分别实现)
$nor就是“Neither nor”(既不也不)的意思
语法:{$nor:[{filed:value1},{filed:value2}...]}
作用:查filed既不位于value1,也不value2的文档
db.goods.find({$nor:[{cat_id:3},{cat_id:11}]},{goods_name:1,cat_id:1,_id:0});

db.goods.find({cat_id:{$nin:[3,11]}},{goods_name:1,cat_id:1,_id:0});

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


1.8:取出价格大于100且小于300,或者大于3000且小于5000的商品($or)

db.goods.find({$or:[{$and:[{shop_price:{$gt:100}},{shop_price:{$lt:300}}]},{$and:[{shop_price:{$gt:3000}},{shop_price:{$lt:5000}}]}]},{shop_price:1,goods_name:1,_id:0});

太长不太好理解,我们拆分一下:
原始语句:
{$or:[条件1,条件2]},{shop_price:1,goods_name:1,_id:0}

其中的条件1和2为以下两条:
{$and:[{shop_price:{$gt:100}},{shop_price:{$lt:300}}]}

{$and:[{shop_price:{$gt:3000}},{shop_price:{$lt:5000}}]}


1.9:取出goods_id%5==1(对5取余等于1),即1,6,11,...这样的商品($mod)
$mod就是“mod”(取余)的意思
语法:{filed:{$mod:[num1,num2]}}
作用:查filed对num1取余之后结果是num2的所有数据
db.goods.find({goods_id:{$mod:[5,1]}},{goods_id:1,goods_name:1,_id:0});


1.10:取出有add_time属性的文档($exists)
$exists就是“exists”(存在)的意思
语法:{filed:{$exists:1}}
作用:含有filed属性的文档将会被查到
db.goods.find({add_time:{$exists:1}},{goods_name:1,add_time:1,_id:0});


1.11:取出属性为String类型的文档($type)
$type就是“type”(类型)的意思
语法:{filed:{$type:1}}
作用:filed属性类型为type的文档将会被查到
type类型用数字描述:

db.goods.find(goods_name:{$type:2},{goods_id:1,goods_name:1,_id:0});


1.12:取出student中爱好hobby数组中含有'b','c'的文档($all)
$all就是“all”(包含所有)的意思
语法:{filed:{$all:[数据1,数据2,数据3...]}}
作用:filed属性(一般是一个数组)中包含数据1/2/3...的文档将会被查到
db.student.find({hobby:{$all:['b','c']}});

mongoDB5--mongoDB增删改查的更多相关文章

  1. 数据库——MongoDB增删改查

    MongoDB增删改查操作 本文包含对数据库.集合以及文档的基本增删改查操作 数据库操作 #1.增 use config #如果数据库不存在,则创建并切换到该数据库,存在则直接切换到指定数据库. #2 ...

  2. MongoDB - 增删改查及聚合操作

    目录 MongoDB - 增删改查及聚合操作 一. 数据库操作(database) 1. 创建及查看库 2. 删除库 二. 集合collectionc=操作(相当于SQL数据库中的表table) 1. ...

  3. [MongoDB]增删改查

    摘要 上篇文章学习了mongodb在windows上的安装,以及如何开启mongodb,最后列举了简单的增删改查操作.本篇将继续深入学习一下增删改查. 相关文章 [MongoDB]入门操作 CRUD ...

  4. springMVC操作mongoDB增删改查

    下面是mongoDb简单的增删改查(新闻类) 附:query.addCriteria(Criteria.where("modelId").ne("").ne(n ...

  5. 第二部分 Mongodb增删改查

    学习内容:1.mongodb增加操作2.mongodb删除操作3.mongodb查询操作增删改查的高级应用Capped Collection(固定集合)GridFS 大文件上传或下载 1: inser ...

  6. MongoDB(六)java操作mongodb增删改查

    java操作mysql数据库的代码我们已经了如指掌了.增删改查,java对mongodb数据库也是类似的操作,先是数据库连接.再是进行操作. 首先我们进入进入admin数据库.然后建立自己的数据库te ...

  7. MongoDB增删改查表文档

    MongoDB 是一个基于分布式文件存储的数据库.由 C++ 语言编写,是一个基于分布式文件存储的开源数据库系统.旨在为 WEB 应用提供可扩展的高性能数据存储解决方案. MongoDB 是一个介于关 ...

  8. mongodb增删改查操作

    Note:mongodb存储的是文档,且文档是json格式的对象,所以增删改查都必须是json格式对象. 注:mongodb常用库和表操作,但mongodb在插入数据时,不需要先创建表. show d ...

  9. mongodb增删改查常用命令总结

    前言 去年我还折腾过mongodb,后来用不到也就没碰了,这就导致了我忘的一干二净,不得不感叹,编程这东西只要不用,就会忘没了.现在我想重拾mongodb,来总结一下常用命令,主要就是增删改查. 另外 ...

  10. Python对MongoDB增删改查

    pip install pymongo import pymongo # 建立连接 client = pymongo.MongoClient() # 指定数据库 (不存在则会新建) db = clie ...

随机推荐

  1. Fedora25

    Fedora默认情况是没有装flash的,首先输入https://get.adobe.com/flashplayer/?loc=cn,选择.rpm包,点击立即下载,下载完成后进到download目录, ...

  2. 【Loadrunner】初学Loadrunner——场景设计

    在使用Loadrunner的时候,常常需要使用到场景设计.但是怎么设计一个满意的场景?如何开展? 首先可以点击tools > Create Controller Scenario > OK ...

  3. vsftp 虚拟用户

    首先安装vsftp db-4wiki mkdir -p /opt/ftp 创建用户 sudo useradd virtual -d /opt/ftp -s /bin/false sudo chown ...

  4. redis13---事务处理。

    Jedis事务我们使用JDBC连接Mysql的时候,每次执行sql语句之前,都需要开启事务:在MyBatis中,也需要使用openSession()来获取session事务对象,来进行sql执行.查询 ...

  5. autoconfig操作小结

    1.添加maven配置在pom文件中 <profile>     <id>prod</id>     <properties>         < ...

  6. 浅谈angularJS指令的属性

    restrict – 这个属性用来指定指令在HTML中如何使用(指令的四种表示方式).我们使用 ‘AE’,这个指令可以被当作新的HTML元素或者属性来使用.如果要允许指令被当作class来使用,我们将 ...

  7. java.lang.OutOfMemoryError异常解决方法

    原因:常见的有以下几种:1.内存中加载的数据量过于庞大,如一次从数据库取出过多数据:2.集合类中有对对象的引用,使用完后未清空,使得JVM不能回收:3.代码中存在死循环或循环产生过多重复的对象实体:4 ...

  8. 定时器 QuartZ Cron表达式

    CronTrigger CronTriggers往往比SimpleTrigger更有用,如果您需要基于日历的概念,而非SimpleTrigger完全指定的时间间隔,复发的发射工作的时间表. CronT ...

  9. 《JS中的面向对象技术》

    内容要点: 1.什么是对象:JS权威指南学习总结-第六章 ,(有句话:一切都是对象) 2.什么面向对象 使用对象时,只关注对象提供的功能,不关注其内部细节,比如jQuery.面向对象是一种通用思想,并 ...

  10. 《Mastering Opencv ...读书笔记系列》车牌识别(I)

    http://blog.csdn.net/jinshengtao/article/details/17883075/  <Mastering Opencv ...读书笔记系列>车牌识别(I ...