付费下载
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验名称:MongoDB高级查询与索引了解以及熟悉mongodb高级查询与索引的基本操作实验环境实验环境的操作系统的版本:Ubuntu22.04安装软件:mongodbmongosh前置知识MongoDB覆盖索引查询官方的MongoDB的文档中说明,覆盖查询是以下的查询:所有的查询字段是索引的一部分所有的查询返回字段在同一个索引中由于所有出现在查询中的字段是索引的一部分,MongoDB无需在整个数据文档中检索匹配查询条件和返回使用相同索引的查询结果。因为索引存在于RAM中,从索引中获取数据比通过扫描文档读取数据要快得多。最后,如果是以下的查询,不能使用覆盖索引查询:所有索引字段是一个数组所有索引字段是一个子文档MongoDB查询分析MongoDB查询分析可以确保我们所建立的索引是否有效,是查询语句性能分析的重要工具。MongoDB查询分析常用函数有:explain()和hint()。MongoDB高级索引索引数组字段假设我们基于标签来检索用户,为此我们需要对集合中的数组tags建立索引。在数组中创建索引,需要对数组中的每个字段依次建立索引。所以在我们为数组tags创建索引时,会为music、cricket、blogs三个值建立单独的索引。索引子文档字段假设我们需要通过city、state、pincode字段来检索文档,由于这些字段是子文档的字段,所以我们需要对子文档建立索引。MongoDB全文索引MongoDB在2.6版本以后是默认开启全文检索的,如果你使用之前的版本,你需要使用以下代码来启用全文检索:>db.adminCommand({setParameter:true,textSearchEnabled:true})或者使用命令:mongod--setParametertextSearchEnabled=true实验步骤MongoDB覆盖索引查询为了测试覆盖索引查询,使用以下users集合:test>db.users.insert({"contact":"987654321","dob":"01-01-1991","gender":"M","name":"TomBenzamin","user_name":"tombenzamin"})我们在users集合中创建联合索引,字段为gender和user_name:test>db.users.createIndex({gender:1,user_name:1})现在,该索引会覆盖以下查询:test>db.users.find({gender:"M"},{user_name:1,_id:0})也就是说,对于上述查询,MongoDB的不会去数据库文件中查找。相反,它会从索引中提取数据,这是非常快速的数据查询。由于我们的索引中不包括_id字段,_id在查询中会默认返回,我们可以在MongoDB的查询结果集中排除它。下面的实例没有排除_id,查询就不会被覆盖:test>db.users.find({gender:"M"},{user_name:1})MongoDB查询分析接下来我们在users集合中创建gender和user_name的索引:test>db.users.ensureIndex({gender:1,user_name:1})现在在查询语句中使用explain:test>db.users.find({gender:"M"},{user_name:1,_id:0}).explain(){explainVersion:'1',queryPlanner:{namespace:'test.users',indexFilterSet:false,parsedQuery:{gender:{'$eq':'M'}},queryHash:'73502B13',planCacheKey:'79A98145',maxIndexedOrSolutionsReached:false,maxIndexedAndSolutionsReached:false,maxScansToExplodeReached:false,......如下查询实例指定了使用gender和user_name索引字段来查询:test>db.users.find({gender:"M"},{user_name:1,_id:0}).hint({gender:1,user_name:1})可以使用explain()函数来分析以上查询:test>db.users.find({gender:"M"},{user_name:1,_id:0}).hint({gender:1,user_name:1}).explain()MongoDB高级索引插入如下数据test>db.users.insert({"address":{"city":"LosAngeles","state":"California","pincode":"123"},"tags":["music","cricket","blogs"],"name":"TomBenzamin"})索引数组字段使用以下命令创建数组索引:>db.users.ensureIndex({"tags":1})创建索引后,我们可以这样检索集合的tags字段:>db.users.find({tags:"cricket"})为了验证我们使用使用了索引,可以使用explain命令:>db.users.find({tags:"cricket"}).explain()索引子文档字段为子文档的三个字段创建索引,命令如下:>db.users.ensureIndex({"address.city":1,"address.state":1,"address.pincode":1})一旦创建索引,我们可以使用子文档的字段来检索数据:>db.users.find({"address.city":"LosAngeles"})查询表达不一定遵循指定的索引的顺序,mongodb会自动优化。所以上面创建的索引将支持以下查询:>db.users.find({"address.state":"California","address.city":"LosAngeles"})同样支持以下查询:>db.users.find({"address.city":"LosAngeles","address.state":"California","address.pincode":"123"})MongoDB全文索引创建全文索引考虑以下posts集合的文档数据,包含了文章内容(post_text)及标签(tags):test>db.posts.insert({"post_text":"enjoythemongodbarticlesonRunoob","tags":["mongodb","runoob"]})我们可以对post_text字段建立全文索引,这样我们可以搜索文章内的内容:test>db.posts.ensureIndex({post_text:"text"})使用全文索引现在我们已经对post_text建立了全文索引,我们可以搜索文章中的关键词runoob:test>db.posts.find({$text:{$search:"runoob"}})以下命令返回了如下包含runoob关键词的文档数据:{"_id":ObjectId("53493d14d852429c10000002"),"post_text":"enjoythemongodbarticlesonRunoob","ta
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年宁波卫生职业技术学院单招职业技能测试题库及答案详解一套
- 2026年宁夏职业技术学院单招职业适应性考试题库及答案详解(典优)
- 2026年大理护理职业学院单招职业技能测试题库带答案详解(达标题)
- 2026年宁夏职业技术学院单招职业适应性测试题库及答案详解(有一套)
- 2026年太原城市职业技术学院单招职业技能测试题库及答案详解(易错题)
- 2026年大兴安岭职业学院单招职业倾向性考试题库附答案详解(综合卷)
- 2026年天津电子信息职业技术学院单招职业倾向性考试题库带答案详解
- 文化艺术品鉴证诚信保证承诺书4篇
- 护理临床教学查房:伤口护理与换药
- 我的宠物狗记我的小黑狗写物(8篇)
- 橡皮筋扑翼机课件
- 公路工程施工中的环境保护措施研究
- 安全生产等12项管理制度文本
- 2025年临床基础检验学技术试题及答案大全
- 老年人的群体特征
- 2026年徐州生物工程职业技术学院单招职业技能测试必刷测试卷及答案1套
- 茶叶健康的秘密武器-探究茶叶的营养价值与健康影响
- 2025新版东莞人文考试试题及答案
- 2026年南京铁道职业技术学院单招职业适应性测试题库及答案1套
- 患者走失应急处理
- 铲运机司机职业技能考核试卷及答案
评论
0/150
提交评论