之前我们探讨了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. CodeForces 546D

    Description 两个士兵在玩一个游戏,开始的时候第一个士兵选择一个数n,并把这个数交给第二个士兵,第二个士兵必须选择一个x满足x>1 且n能被x整除,然后将n变为n/x,然后把这个数交给 ...

  2. Jquery 获取上传文件大小

    <input type="file" id="file1" /> <script> var size = $("#file1& ...

  3. mysql备份和还原

    MySQLl提供了一个mysqldump命令,我们可以用它进行数据备份. 按提示输入密码,这就把abc数据库所有的表结构和数据备份到abc_20161108.sql了, # mysqldump -u ...

  4. centos7内核升级

    默认centos7的内核版本是3.10,升级的原因是为了测试openvswitch的vlan技术,默认openvswitch的2.3版本是允许centos7默认内核3.10支持,下面是软件与内核版本对 ...

  5. MySQL的保留关键字,使用时尽量避免

    今天用phpmyadmin时,注意到一个提示: 列名 'update' 是一个MySQL 保留关键字. 突然意识到还是应该尽量避免这些保留关键字,也百度了一下.找到了这些关键字,列出来下 使用mysq ...

  6. OVERLAPPED相关的socket函数介绍

    OVERLAPPED相关的socket函数介绍 上一篇文章介绍了<Windows核心编程>OVERLAPPED结构与内核对象IOCompletionPort相关概念,见http://www ...

  7. easyUI的treegrid列表添加查询

    一些数据使用treegrid显示,添加筛选条件, 首先创建treegrid列表 var tree = $("#TreeGrid").treegrid({ url:"cha ...

  8. js行内式遇到的一些问题 DOM对象和jq对象转换的问题

    这两天给后台页面做页面,我的工作比较简单,只需要写结构和样式就行了,写好之后,后端大哥用ajax重写页面加载数据,顺便给标签添加选中事件,做选中后变色的处理,但是却遇到一个问题,一直选不到触发事件这个 ...

  9. @Scheduled(cron = "0 0 * * * ?")实现定时任务

    //每一个小时执行一次 @Scheduled(cron = "0 0 * * * ?") public void saveDailyScoreScheduled() { try { ...

  10. jquery操作ajax返回的页面元素

    这两天工作不忙,正好从朋友那里拿到一个某个应用的开发文档,相关数据放在了mongodb里,自己电脑可以本地开启服务器然后通过给的借口来获取数据.由于这是一个比较大比较全的一个完整项目,也没有那么多经历 ...