本节主要讲解下MongoDB的索引使用
**查询find()补充:**条件操作符语法:$type:[key]
可选的 key 值如下:
1: 双精度型(Double)
2: 字符串(String)
3: 对象(Object)
4: 数组(Array)
5: 二进制数据(Binary data)
7: 对象 ID(Object id)
8: 布尔类型(Boolean)
9: 日期(Date)
10: 空(Null)
11: 正则表达式(Regular Expression)
13: JS 代码(Javascript)
14: 符号(Symbol)
15: 有作用域的 JS 代码(JavaScript with scope)
16: 32 位整型数(32-bit integer)
17: 时间戳(Timestamp)
18: 64 位整型数(64-bit integer)
-1: 最小值(Min key)
127: 最大值(Max key)
> db.zhongrun.find({"name":{$type:2}})
和下边的写法一致:
> db.zhongrun.find({"name":{$type:'string'}})
limit 和skip用法:
读取指定数量的数据记录 limit()。
范例:
> db.zhongrun.find().limit(1)
读取一条记录,默认是排在最前面的那一条被读取。
读取时跳过指定数量的数据记录 skip()。
范例:
> db.zhongrun.find().limit(1).skip(1)
当然,还可以添加 find 的查找条件的参数,以便进行更精确的查找。
MongoDB排序sort:
与 Mysql中的排序一样有升序和降序,其中升序用 1 表示,降序用 -1 表示。
语法:db.COLLECTION_NAME.find().sort({KEY:1|-1})
> db.zhongrun.find().sort({"time":1})
MongoDB 索引:
索引通常能够极大的提高查询的效率,如果没有索引,MongoDB 在读取数据时必须扫描集合中的每个文件并选取那些符合查询条件的记录。这种扫描全集合的查询效率是非常低的,特别在处理大量的数据时,查询可能要花费几十秒甚至几分钟,这无疑对网站的性能是非常致命的。
索引是特殊的数据结构,索引存储在一个易于遍历读取的数据集合中,索引是对数据库集合中一个文档或多个文档的值进行排序的一种结构。
语法:db.COLLECTION_NAME.ensureIndex({KEY:1|-1})
同样 1 代表升序,-1 代表降序。
案例:
> db.zhongrun.ensureIndex({"name":1})
聚合函数:
案例:
db.COLLECTION_NAME.aggregate({
$match:{x:1},
{limit:NUM},
$group:{_id:$age}
})
这些参数都可选:
$match:查询,跟 find 一样;
$limit:限制显示结果数量;
$skip:忽略结果数量;
$sort:排序;
$group:按照给定表达式组合结果。
案例:
> db.zhongrun.aggregate([{$group:{_id:"$name", user:{$sum:"$user_id"}}}])
常见的表达式:管道(pipeline):
MongoDB 的聚合管道将 MongoDB 文档在一个管道处理完毕后将结果传递给下一个管道处理。管道操作是可以重复的。
表达式:处理输入文档并输出。表达式是无状态的,只能用于计算当前聚合管道的文档,不能处理其它的文档。
聚合框架中常用的几个操作:
$project:修改输入文档的结构。可以用来重命名、增加或删除域,也可以用于创建计算结果以及嵌套文档。
$match:用于过滤数据,只输出符合条件的文档。$match 使用 MongoDB 的标准查询操作。
$limit:用来限制 MongoDB 聚合管道返回的文档数。
$skip:在聚合管道中跳过指定数量的文档,并返回余下的文档。
$unwind:将文档中的某一个数组类型字段拆分成多条,每条包含数组中的一个值。
$group:将集合中的文档分组,可用于统计结果。
$sort:将输入文档排序后输出。
$geoNear:输出接近某一地理位置的有序文档。
案例:
> db.zhongrun.aggregate([{$match:{user_id:{$gt:0,$lte:2}}},{$group:{_id:"user",count:{$sum:1}}}])
{"_id":"user","count":2}
小节:主要对MongoDB 的查询语法的补充、索引和聚合,可以使用 find 进行查询,sort 用于排序,ensureIndex 用于建立索引,aggregate 用于聚合以及简单的使用Case。
来源:CSDN
作者:南柯忆梦
链接:https://blog.csdn.net/qq_37779333/article/details/104358098