之前我们探讨了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. vim 撤销 恢复 快捷键

    u   撤销上一步的操作 Ctrl+r 恢复上一步被撤销的操作

  2. django 安装记录

    1. 下载django安装包,下载个最新的安装包即可. https://www.djangoproject.com/download/ 2. 在本地解压   tar -xvf  安装包名称 3. 安装 ...

  3. 生成元(Digit Generator,ACM/ICPC Seoul 2005,UVa 1583)

    #include<cstdio>#include<cstdlib>#include<cstring>using namespace std;int t, n, a, ...

  4. IE8下 Select文字垂直居中的办法

    .select { padding: 4px 0; height: 30px; line-height: 26px; vertical-align: middle;} 处理前: 处理后:

  5. win10 Incredibuild 兼容

    电脑换了win10,所有的软件都需要重新安装. win10的体验还是很不错的.但是也有一堆的问题.原来的vs2010今天无法再使用分布式编译IncrediBuild. 现象是,虽然可以连上分布式编译的 ...

  6. nodejs学习随笔

    <一> 简述nodejs (社区:www.npmjs.com)可查找一些第三方模块. nodejs是可以让js运行在浏览器之外的服务器端的平台,实现了文件系统.模块.包.操作系统API.网 ...

  7. CentOS安装glibc-2.14,错误安装libc.so.6丢失急救办法

    CentOS安装glibc-2.14,错误安装libc.so.6丢失急救办法   到http://ftp.gnu.org/gnu/glibc/下载glibc-2.14.tar.xz tar glibc ...

  8. PHP中 post 与get的区别 详细说明

    1.Get 方法通过 URL 请求来传递用户的数据,将表单内各字段名称与其内容,以成对的字符串连接,置于 action 属性所指程序的 url 后,如[url]http://www.jincaib.c ...

  9. shell中$0,$?,$!

    变量说明: $$ Shell本身的PID(ProcessID) $! Shell最后运行的后台Process的PID $? 最后运行的命令的结束代码(返回值) $- 使用Set命令设定的Flag一览 ...

  10. 转:详解JMeter正则表达式(2)

    例如, 引用名称:MYREF. 正则表达式:name="(.+?)" value="(.+?)". 模板:$1$$2$. 不要用/ /封装正则表达式. 如下变量 ...