mongoDB5--mongoDB增删改查
之前我们探讨了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增删改查的更多相关文章
- 数据库——MongoDB增删改查
MongoDB增删改查操作 本文包含对数据库.集合以及文档的基本增删改查操作 数据库操作 #1.增 use config #如果数据库不存在,则创建并切换到该数据库,存在则直接切换到指定数据库. #2 ...
- MongoDB - 增删改查及聚合操作
目录 MongoDB - 增删改查及聚合操作 一. 数据库操作(database) 1. 创建及查看库 2. 删除库 二. 集合collectionc=操作(相当于SQL数据库中的表table) 1. ...
- [MongoDB]增删改查
摘要 上篇文章学习了mongodb在windows上的安装,以及如何开启mongodb,最后列举了简单的增删改查操作.本篇将继续深入学习一下增删改查. 相关文章 [MongoDB]入门操作 CRUD ...
- springMVC操作mongoDB增删改查
下面是mongoDb简单的增删改查(新闻类) 附:query.addCriteria(Criteria.where("modelId").ne("").ne(n ...
- 第二部分 Mongodb增删改查
学习内容:1.mongodb增加操作2.mongodb删除操作3.mongodb查询操作增删改查的高级应用Capped Collection(固定集合)GridFS 大文件上传或下载 1: inser ...
- MongoDB(六)java操作mongodb增删改查
java操作mysql数据库的代码我们已经了如指掌了.增删改查,java对mongodb数据库也是类似的操作,先是数据库连接.再是进行操作. 首先我们进入进入admin数据库.然后建立自己的数据库te ...
- MongoDB增删改查表文档
MongoDB 是一个基于分布式文件存储的数据库.由 C++ 语言编写,是一个基于分布式文件存储的开源数据库系统.旨在为 WEB 应用提供可扩展的高性能数据存储解决方案. MongoDB 是一个介于关 ...
- mongodb增删改查操作
Note:mongodb存储的是文档,且文档是json格式的对象,所以增删改查都必须是json格式对象. 注:mongodb常用库和表操作,但mongodb在插入数据时,不需要先创建表. show d ...
- mongodb增删改查常用命令总结
前言 去年我还折腾过mongodb,后来用不到也就没碰了,这就导致了我忘的一干二净,不得不感叹,编程这东西只要不用,就会忘没了.现在我想重拾mongodb,来总结一下常用命令,主要就是增删改查. 另外 ...
- Python对MongoDB增删改查
pip install pymongo import pymongo # 建立连接 client = pymongo.MongoClient() # 指定数据库 (不存在则会新建) db = clie ...
随机推荐
- sharepoint:各种阀值
//来源:http://www.cnblogs.com/jindahao/archive/2012/04/25/2469791.html 引用自JonyZhu,如下: 技术参数 值 列表最大记录数 5 ...
- springmvc集成aop记录操作日志
首先说明一下,这篇文章只做了记录日志相关事宜 具体springmvc如何集成配置aop对cotroller进行拦截,请看作者的另一篇文章 http://www.cnblogs.com/guokai87 ...
- 在windows下安装pip scrapy...
将 C:\Users\用户名\AppData\Local\Programs\Python\Python35\Scripts C:\Users\用户名\AppData\Local\Programs\Py ...
- Java线程池使用
1.构造函数 public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit ...
- php添加扩展插件
给PHP安装扩展的方式有好多 一.重新编译 进入PHP源码目录./configure --prefix=/usr/local/php ...[其他编译参数] 二.通过phpize添加扩展 进入PHP源 ...
- Quartz(任务调度)- Cron
参照:http://www.cnblogs.com/linjiqin/archive/2013/07/08/3178452.html 工具:在线生成Cron 语法规则: Seconds Minutes ...
- windows线程池四种情形(win核心读书笔记)
windows线程池四种情形(win核心读书笔记) Mircosoft从Windows2000引入线程池API,并在Vista后对线程池重新构架,引入新的线程池API.以下所有线程池函数均适用于Vis ...
- chrom 快捷键 整理版
chrome窗口和标签页快捷键: Ctrl+N 打开新窗口 Ctrl+T 打开新标签页 Ctrl+Shift+N 在隐身模式下打开新窗口 Ctrl+O,然后选择文件 在谷歌浏览器中打开计算机上的文件 ...
- 更新sdk
更新sdk,遇到了更新下载失败问题: Fetching https://dl-ssl.google.com/android/repository/addons_list-2.xmlFetched Ad ...
- XOR and Favorite Number(莫队算法+分块)
E. XOR and Favorite Number time limit per test 4 seconds memory limit per test 256 megabytes input s ...