MongoDB学习笔记-查询
MongoDB中使用find或findOne函数执行查询
find函数
db.c.find()--查询集合c所有
db.c.find({“name”:”zhangsan”})
注意:查询条件的值必须是常量,也就是说不能用变量
db.c.find({“name”:this.name})//这样是行不通的
查询条件
“$lt”对应<
“$lte”对应<=
“$gt”对应>
“$gte”对应>=
“$ne”对应!=
用法:
db.users.find({“age”:{“$gte”:18,”$lte”:30}})//查找年龄大于等于18小于等于30的用户
db.users.find({“name”:{“$ne”:”张全蛋”}})
OR查询
MongoDB中用两种方式来实现OR查询:
“$in”可以用来查询一个键的多个值,它非常灵活,可以指定不同类型的条件
“$nin”与”$in”作用相反
“$or”可以在多个贱种查询任意的给定值
用法:
db.users.find({“name”:{“$in“ [“王尼玛”,“张全蛋”]}})
db.users.find(“user_id”:{“$in”: [123456,”123456”]})//用户id键的数据类型发生变化时的查找
db.users.find({“name”:{“$or”: [“age”: {“$in”: [18,20,25]},{“gender”:1}]}})
$not
$not是元条件操作符,它可以用在任何其他条件之上。
db.users.find({“id_num”:{“$not”:{“$mod”: [5,1]}}}) //”$mod”是取模运算符
null类型
users集合有三条数据如下:
{“name”:王尼玛”,”age”:18}
{“name”:”张全蛋”,”age”:20}
{“name”:”唐马孺”,”age”:null}
其中“唐马儒”的age为null值
然后查询:db.users.find({“age”:null})
查出来的结果不仅有{“name”:”唐马孺”,”age”:null},其他的两条也会被查出。因为null不仅会匹配某个键值为null的文档,而且还会
匹配不包含这个键的文档。
如果仅想匹配键值为null的文档,那就要用到”$exists”
db.users.find({“age”: [null],”$exists”:true})
正则表达式
db.users.find({“name”:/张./})
查询数组
db.food.insert({“fruit”: [“apple”,”banana”,”peach”]})
查询:
db.food.find({“fruit”: “banana”})
结果会匹配上面插入的文档
$all:用于查找匹配多个条件下的数组
例如,常见一个包含3个元素的集合:
db.food.insert({“fruit”: [“apple”,”banana”,”peach”]})
db.food.insert({“fruit”: [“apple”,”kumquat”,”orange”]})
db.food.insert({“fruit”: [“cherry”,”banana”,”apple”]})
要找到既有”apple”又有“banana”的文档:
db.food.find({fruit:{$all: [“apple”,”banana”]}})
结果会找出第1个和第3个文档
$size:用于查询特定长度的数组
db.food.find({“fruit”:{“$size”:3}})
按索引匹配:db.food.find({“fruit.2”:”peach”]})
$slice:用于分割find/findOne返回值的结果集,返回某个键匹配的数组元素的子集。
db.food.findOne({},{“fruit”:{“$slice”:2}})
db.food.findOne({},{“fruit”:{“$slice”:-2}})//从右向左
$elemMatch:要求MongoDb同时使用查询条件作用于同一个数组(默认情况下是多个条件作用于多个数组)
db.test.find({“x”:{“$elemMatch”:{“$gt”:10,”$lt”:20}}})
$where查询
$where用于任何查询,它可以执行任意Javascript。因此为了安全起见,应该严格限制或不使用$where。
db.food.find({“$where”:function(){
forvar current in this(){
//todo
}
}})
使用$where查询时,速度上要比常规查询慢的多,因为它要把每个文档从BSON对象转换成Javascript对象。
limit、skip和sort
limit函数:用于限制查询结果的个数
db.food.find().limit(3) //只返回3个匹配的结果。要是匹配的结果不到3个,则返回匹配数量的结果。
skip函数:用于略过指定个数的文档
db.food.find().skip(1) //略过第1个文档,返回后两个
sort函数:对查询结果进行排序,1是升序,-1是降序
db.food.find().sort({“fruit”:1})
MongoDB学习笔记-查询的更多相关文章
- 【转】MongoDB学习笔记(查询)
原文地址 MongoDB学习笔记(查询) 基本查询: 构造查询数据. > db.test.findOne() { "_id" : ObjectId("4fd58ec ...
- MongoDB学习笔记系列
回到占占推荐博客索引 该来的总会来的,Ef,Redis,MVC甚至Sqlserver都有了自己的系列,MongoDB没有理由不去整理一下,这个系列都是平时在项目开发时总结出来的,希望可以为各位一些帮助 ...
- PHP操作MongoDB学习笔记
<?php/*** PHP操作MongoDB学习笔记*///*************************//** 连接MongoDB数据库 **////*************** ...
- MongoDB 学习笔记(原创)
MongoDB 学习笔记 mongodb 数据库 nosql 一.数据库的基本概念及操作 SQL术语/概念 MongoDB术语/概念 解释/说明 database database 数据库 table ...
- mongoDB 学习笔记纯干货(mongoose、增删改查、聚合、索引、连接、备份与恢复、监控等等)
最后更新时间:2017-07-13 11:10:49 原始文章链接:http://www.lovebxm.com/2017/07/13/mongodb_primer/ MongoDB - 简介 官网: ...
- MongoDB学习笔记(六)--复制集+sharding分片 && 总结
复制集+sharding分片 背景 主机 IP 服务及端口 Server A ...
- MongoDB学习笔记(五)--复制集 && sharding分片
主从复制 主从节点开启 主节 ...
- MongoDB学习笔记(四)--索引 && 性能优化
索引 基础索引 ...
- MongoDB学习笔记(二)--Capped集合 && GridFS存储文件
Capped集合 Capped集合的大小是固定的,如果空间都被用完了,新添加的对象 ...
随机推荐
- .net验证码生成及使用
验证码的作用: 几年前,大部分网站.论坛之类的是没有验证码的,因为对于一般用户来说验证码只是增加了用户的操作,降低了用户的体验.但是后来各种灌水机器人.投票机器人.恶意注册机器人层出不穷,大大增加了网 ...
- AX 的 NumberSequences
EG: 在库存模块新加一个numberSequences. 1. 新加一个EDT\ SML_Test1; 2. 在库存模块的 class\NumberSeqReference_Inventory\Lo ...
- 【MySQL】使用mysqlbinlog回滚
参考:http://wubx.net/?s=mysqlbinlog mysql官方的mysqlbinlog没有回滚的功能,淘宝大牛对官方代码进行了修改使之能够将binlog中的DML操作变成互逆的语句 ...
- [微信开发利器]微信内移动前端开发抓包调试工具fiddler使用教程
[微信开发利器]微信内移动前端开发抓包调试工具fiddler使用教程 在朋友圈看到一款疯转的H5小游戏,想要copy,什么?只能在微信里打开?小样,图样图森破,限制了oauth.微信浏览器内打开, ...
- Symantec System Recovery
目的:备份系统,备份文件,裸机恢复,异机恢复等 工具:http://bbs.kafan.cn/thread-1800182-1-1.html 下载地址:http://pan.baidu.com/s/1 ...
- 2.1Android底层开发需要哪些工具
开发.测试和调试Linux驱动.HAL程序库需要的工具: (1)JDK6或以上版本: (2)Eclipse3.4或以上版本: (3)ADT(用于开发Android应用程序): (4)CDT(用于开发A ...
- Application Designer Security
This wiki page covers how to manage and restrict Application Designer security through permission li ...
- DOCTYPE对$(window).height()取值的影响
前言:公司项目需要用到一个弹框垂直居中,网上类似的垂直居中弹出层大同小异,因为项目是基于Jquery 下的,所以用$(window).height()-layer.height())/2 +$(doc ...
- 【PHP】配置环境变量
使用Zend Framework的zf.bat创建项目时,出现如下提示:"php.exe"不是内部或外部命令,也不是可运行的程序或批处理文件. 解决方法: 配置php的环境变量: ...
- PHP函数:生成N个不重复的随机数
思路:将生成的随机数存入数组,再在数组中去除重复的值,即可生成一定数量的不重复随机数. 程序: <?php /* * array unique_rand( int $min, int $max, ...