MongoDB 快速入门--中级

时间:2023-06-02 13:18:02

索引

ensureIndex 用来创建索引,需要注意的就是一个集合最多也就64个索引

MongoDB 快速入门--中级

如果没加所有就是表扫表,速度很慢,

当然如果索引的键有多个,就必须考虑顺序

拓展索引

同样的也可以为内嵌文档

建立索引

MongoDB 快速入门--中级

MongoDB 快速入门--中级

当然我们也可以为索引指定名称,索引呢,索引的语法就是

db.collection.ensureIndex({字段:方向(1,-1)},
{"name":索引名称,
 unique:boolean 是否唯一,
 dropDupes:boolean 是否删除重复
})

explain,himt(强制使用某个索引)

MongoDB 快速入门--中级

MongoDB 快速入门--中级

地理空间索引

MongoDB 快速入门--中级

只有满足一个键对应一个包含两个键的数组,或包含两个键的文档时就满足条件

MongoDB 快速入门--中级

MongoDB 快速入门--中级

MongoDB 快速入门--中级

然后相对应的就是查询了,$near:[]

MongoDB 快速入门--中级

MongoDB 快速入门--中级

聚合

count([{query}])

MongoDB 快速入门--中级

distinct去除重复的值

MongoDB 快速入门--中级

group

使用  aggregate指令

这个聚合总体来说和SQL的聚合是差不了多少的,上图

MongoDB 快速入门--中级

常用的聚合表达式:

MongoDB 快速入门--中级

同时aggregate还有一个管道的概念,就是将上一次处理的结果作为下一次的参数进行处理

MongoDB 快速入门--中级

在上面我们可以看到是先match,然后再group的,这就是一个管道,常用操作如下:

  • $project:修改输入文档的结构。可以用来重命名、增加或删除域,也可以用于创建计算结果以及嵌套文档。
  • $match:用于过滤数据,只输出符合条件的文档。$match使用MongoDB的标准查询操作。
  • $limit:用来限制MongoDB聚合管道返回的文档数。
  • $skip:在聚合管道中跳过指定数量的文档,并返回余下的文档。
  • $unwind:将文档中的某一个数组类型字段拆分成多条,每条包含数组中的一个值。
  • $group:将集合中的文档分组,可用于统计结果。
  • $sort:将输入文档排序后输出。
  • $geoNear:输出接近某一地理位置的有序文档。

MapReduce

db.runCommand(
{ mapreduce : 字符串,集合名,
map : 函数,见下文
reduce : 函数,见下文
[, query : 文档,发往map函数前先给过渡文档]
[, sort : 文档,发往map函数前先给文档排序]
[, limit : 整数,发往map函数的文档数量上限]
[, out : 字符串,统计结果保存的集合]
[, keeptemp: 布尔值,链接关闭时临时结果集合是否保存]
[, finalize : 函数,将reduce的结果送给这个函数,做最后的处理]
[, scope : 文档,js代码中要用到的变量]
[, jsMode : 布尔值,是否减少执行过程中BSON和JS的转换,默认true] //注:false时 BSON-->JS-->map-->BSON-->JS-->reduce-->BSON,可处理非常大的mapreduce,<br>                                    //true时BSON-->js-->map-->reduce-->BSON
[, verbose : 布尔值,是否产生更加详细的服务器日志,默认true]
}
);

直接上图吧:

MongoDB 快速入门--中级

MongoDB 快速入门--中级

这里的key,values就对应了上面this.name和this.socr

MongoDB 快速入门--中级