之前我们探讨了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. jsp:useBean的使用

    ->Bean的基本要素: 1.必须要有一个不带参数的构造器,在jsp元素创建Bean时会调用空构造器 2.Bean类应该没有任何公共实例变量,也就是说,不允许直接访问实例变量,通过setter/ ...

  2. ViewCompat.animate(view) 动画的操作

    ViewCompat.animate(view) 实现动画的操作,动画兼容包; ViewCompat.animate(view) 实现动画的操作 .setDuration(200) .scaleX(0 ...

  3. 谈谈ThreadStatic

    可能经常做多线程.线程池的童鞋早就知道这种问题,原谅我一直对线程研究不深. 这个东西好像出现有一段时间了,不过最近我才用到,做的API的服务,用来保存当前请求的上下文内容,原来用过Thread.Set ...

  4. CSS绑定

    css绑定会对元素的CSS类进行操作.在某些情况下这将非常有用,例如:当数值是负的时将其高亮显示. (注:如果如果不想直接更改CSS类,而是只要改其中一个样式,则需要使用style绑定) 示例:使用静 ...

  5. Fighting For 2017 Season Contest 1

    比赛地址[https://vjudge.net/contest/147011#problem/A].960626 题目一:[http://codeforces.com/problemset/probl ...

  6. jmeter从外部文件取值问题,如果文件中的参数值为纯数字形式的,jmeter会默认将其识别成int型数据

    如果你通过CSV Data Set Config或者_StringFromFile函数来参数化你的请求,需要特别注意当参数为纯数字时,jmeter会默认将其识别成int型数据,说明jmeter并不是默 ...

  7. matlab imshow()函数显示白色图像问题

    在MATLAB中,我们常使用imshow()函数来显示图像,而此时的图像矩阵可能经过了某种运算.在MATLAB中,为了保证精度,经过了运算的图像矩阵I其数据类型会从uint8型变成double型.如果 ...

  8. python中的pip安装

    windows下安装PIP 当前环境(windows 7,python安装路径为c:\Python) 1.首先到官网下载(https://pypi.python.org/pypi/setuptools ...

  9. 定时器 QuartZ Cron表达式

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

  10. KindeEditor图片上传插件用法

    因业务需要找了款插件 KindeEditor编辑器确认挺好用,但无奈技术有限,上传配置不知,故问度娘! 图片上传对于部分新手来说有时候是一件非常头疼的事,今天来分享一下项目中使用到的这个插件Kinde ...