当前位置: 代码网 > it编程>前端脚本>Node.js > node.js mongoose index索引操作

node.js mongoose index索引操作

2024年05月19日 Node.js 我要评论
简介在 mongoose 中,索引(index)是一种用于提高查询性能的数据结构,它可以加速对数据库中文档的检索操作索引类型单索引、复合索引、文本索引、多键索引、哈希索引、地理位置空间索引、通配符索引

简介

在 mongoose 中,索引(index)是一种用于提高查询性能的数据结构,它可以加速对数据库中文档的检索操作

索引类型

单索引、复合索引、文本索引、多键索引、哈希索引、地理位置空间索引、通配符索引

单索引

在了解索引之前先看一下mongodb库,库中集合tours有400条数据,有slug、ratingaverage、price、summary等字段,接下来就是对以上四个字段做索引

我们查询slug为the-forest-hiker的文档,在 mongodb 中,explain方法用于获取有关查询执行计划的详细信息,为query的原型方法,调用:const queryinfo = await query.explain(),查看执行结果

其中totaldocsexamined为400,表示扫描了400个文档,nreturend为1表示匹配并返回文档的数量为1。

查询一条数据就需要把整个集合全部扫描效率过于低,当文档个数少的情况下可以忽略查询速度,如果文档个数数以万计,那么就要优化查询速度,所以需要索引。

为slug添加索引,schema.index({ slug: 1 })  (1表示升序,-1表示降序),再查询

tourschema.index({ slug: 1 });

也可在定义schema的时候设置文档字段的schematype的index为true

此时totaldocsexamined为1,表示只扫描了1个文档,极大的提高了查询速度。

当执行query后,slug_1的usage为1,表示索引命中了一次。

复合索引

tourschema.index({ price: 1, ratingsaverage: -1 });

同时为两个字段添加索引,表示先对price进行升序,然后在同price的情况下进行ratingsaverage降序。

查询price大于等于1000并且ratingsaverage大于等于4的文档,查询详细信息totaldocsexamined为5,nreturend为5,如果不设置复合索引,对两个字段进行复合查询的时候,会对全文档进行查询匹配。

文本索引

tourschema.index({ summary: 'text' });
 const doc = await tourmodel.find({ $text: { $search: 'national' }});

查询信息

如果不创建索引,则扫描全文档。

多键索引是针对数组

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com