MongoDB权威指南学习笔记4---查询相关的知识点

1 find

find({查询条件},{"key":1,"email":1})  后面表示返回哪些键

2 可用的比较操作符

$lt , $lte,$gt,$gte

比如db.users.find({"age":{"$gte":18,"$lte":30}})

3不等于

find(...{"key":{"$ne":"value"}}

4 in

find(...{"key":{"$in":[1,2,3]}}

5 nin

find(...{"key":{"$nin":[1,2,3]}}

6 or

find( {"$or":[  {"key1":"value1"}, {"key2":"value2"}          ]})

find( {"$or":[  {"key1":   {"$in":["value1","value2"]}    }, {"key2":"value2"}          ]})

7$mod

find({"key": {"$mod":[5,1]}})

8 not

find({"key":{"$not":{"$mod":[5,1]}}})

9 and

find({"$and":[{"x":{"$lt":1}},  {"x":4}]})

这个匹配{"x"[0,4]}

等同于 find({"x":{"$lt":1,"$in":[4]}})

10 关于null

find( {"y": null } )---不仅会找到y:null的文档,还会找到不存在此字段的文档。

可以使用

find( {"z": {"$in" : [null],"$exists":true}})

11 查询使用正则表达式 ---PCRE

查询名为Joe或者joe

find({"name": /joe/i})

find({"name": /joe?/i})

find({"name": /^joe/})

12 查询数组

find({"fruit":"value1"}) 也就是数组中包含value1就可以搜到!

13数组中包含多个

find(  {"fruit":  {"$all":["value1","value2"]}}

也就是数组既包含value1又包含value2

14精确匹配

find({"fruit":【"value1","value2"]})

数组包含且仅仅包含这2个值才可以!

15数组的序号查询

find({"fruit.2":"peach"})

 16$size

find({"fruit":{"$size":3}})

17$slice

findOne(criteria,{"comments":{"$slice":10}})

返回前10条评论!

findOne(criteria,{"comments":{"$slice":-10}})

返回后10条评论!

findOne(criteria,{"comments":{"$slice":【23,10】}})

跳过23个元素,尽可能返回10个元素!

注意,只能对comments进行控制,其它字段仍然返回!

18 $

模式:

comments:[{name:bob,email:xxx}, ................]

find({"comments.name":"bob"},{"comments.$":1})

返回第一个匹配的文档。

19 数组的查询

{"x": {"$gt" : 10,"$lt":20}}

如果此时x是一个数组,则任何一个元素满足其中1个条件就可以认为匹配!

但是如果不是一个数组,则进行同时匹配!

20$elemMatch

首先,只会针对数组元素进行匹配

find({"x":{"$elemMatch":{"$gt":10,"$lt":20}})

21如果创建了索引

find({"x": {"$gt" : 10,"$lt":20}}).min({"x":10}).max({"x":20})

效果非常好!因为不是扫描所有索引,而是在部分索引里进行扫描!

 22 查询内嵌文档

find({"name":{"first":"joe","last":"schmoe"}})---精确匹配!

悲剧的是,这种查询还是顺序相关的!!!

注意:对于内嵌文档,这种查询都是精确匹配,必须用下面的方式!

23 更好的做法

find({"name.first“:"joe",  "name.last":"schmoe"})

难道是or的关系???

24 请参考$elemMatch的方法!

25终极必杀技-where

----------------关于游标

每次取100条或者4MB,取较小的一个。

find().skip(3).limit(10).sort({"key1":1,"key2":-1})._addSpecial("$maxscan",20)

._addSpecial("$min",20)

._addSpecial("$max",20)

._addSpecial("$showDiskLoc":true)

.snapShot()---会让查询变慢!

备注:可以在启动mongod时指定--noscripting,关闭js的运行!---关闭服务器端脚本!

MongoDB权威指南学习笔记4---查询相关的知识点

时间: 2024-12-14 18:05:23

MongoDB权威指南学习笔记4---查询相关的知识点的相关文章

MongoDB权威指南学习笔记5---索引相关的知识点

1 查看查询计划 db.user.find({"username":"xxx"}) .explain() db.doc.find({"es_y":"2014"}).explain() {  "cursor" : "BasicCursor",  "isMultiKey" : false,  "n" : 0,  "nscannedObject

mongoDB权威指南学习笔记

//mongoDB第1-3章节添加,修改,修改器的笔记: //备注:和MySQL查询一样,时刻想着优化查询数据的时间和性能 //db.help() //数据库帮助信息 //db.blog.help() //集合帮助信息 //db.c.find().help() //返回find()方法的子方法信息 //清空集合数据 //db.blog.remove() //插入信息 //db.blog.insert({'title' : 'bbbbb', 'content' : 'bfbfbf', 'hits'

Git权威指南学习笔记(一)Git初始化

1.在Git中配置用户名和邮件地址 $ git config --global user.name "Jymn_Chen" $ git config --global user.email "[email protected]" 注意把用户名和邮件地址替换成你自己的资料. 在这里的参数global表示配置的作用范围是当前用户,如果将参数改为system,那么配置的作用范围是系统中的所有用户. 2.创建版本库 新建一个目录并cd到目录中,执行以下命令: $ git i

Git权威指南学习笔记(二)Git暂存区

如下图所示: 左侧为工作区,是我们的工作目录. 右侧为版本库,其中: index标记的是暂存区(stage),所处目录为.git/index,记录了文件的状态和变更信息. master标记的是master分支所代表的目录树.HEAD指向master分支. objects标记的是Git的对象库,所处目录为.git/objects,文件索引建立了文件和对象库中对象实体之间的映射关系. 通过该图我们可以清晰地看出add,commit等命令的转化关系.下面通过git diff和git status两条命

JavaScript权威指南学习笔记之一

1.关于分号 javascript里面不强制使用分号来表示一行语句的结束,但是最好能够在写js之前,特别是在原有的js上面新增时,最好前置一个分号.避免这种情况发生:  2.JavaScript类型转换 3.关于=== ①如果类型不同则不等 ②null===null或undefined===undefined ③true===true或false===false ④NaN不等 ⑤0===0 0===-0 ⑥如果是同一个object,array,function则相等 4.关于== ①如果已经==

Hadoop权威指南学习笔记一

Hadoop权威指南学习笔记一 声明:本文是本人基于Hadoop权威指南学习的一些个人理解和笔记,仅供学习参考,有什么不到之处还望指出,一起学习一起进步. 转载请注明:http://blog.csdn.net/my_acm 1. 数据的增长远远超过了磁盘的读取速度,传统的数据存储方式和分析方式变得不再适用于大数据的处理. Hadoop分为两大核心技术,HDFS(HadoopDistributed File System-分布式hadoop文件处理系统)和MapReduce(分为Map-数据映射等

sencha touch权威指南---学习笔记5-经纬度获取计算直线距离

<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml"><head>    <meta charset="utf-8" />    <title></title>    <link rel="stylesheet" href="sdk-touch/resources/css/sencha-touch.

Hadoop权威指南学习笔记三

HDFS简单介绍 声明:本文是本人基于Hadoop权威指南学习的一些个人理解和笔记,仅供学习參考.有什么不到之处还望指出,一起学习一起进步. 转载请注明:http://blog.csdn.net/my_acm Hadoop说白了就是一个提供了处理分析大数据的文件集群,当中最重要的无疑是HDFS(Hadoop Distributed File System)即Hadoop分布式文件系统. 1. HDFS是一种以流式数据訪问模式(一次写入多次读取的模式)存储超大文件的系统. 其不须要的高端的硬件系统

CSS权威指南学习笔记系列(1)CSS和文档

题外话:HTML是一种结构化语言,而CSS是它的补充:这是一种样式语言.CSS是前端三板斧之一,因此学习CSS很重要.而我还是菜鸟,所以需要加强学习CSS.这个是我学习CSS权威指南的笔记,如有不对,请谅解和指出.谢谢大家.正文: 第一章 CSS和文档---------- 1.CSS,称为层叠样式表.使用CSS的理由有:a.易于使用,样式表能大大减少Web创作人员的工作量:b.在多个页面上使用样式,可以创建一个样式表,然后把这个样式表应用到多个页面:c.层叠,CSS还规定了冲突规则:这些规则统称