mongodb数据库教程-MongoDB覆盖查询

跨零代码为大家提供高品质的解决方案,请大家多多来访,跨零不胜感激,在此谢过。

在本章中,我们将了解覆盖查询。

什么是覆盖查询?

根据官方MongoDB文档,覆盖查询是一个查询,其中 –

  • 查询中的所有字段都是索引的一部分。
  • 查询中返回的所有字段都在同一个索引中。

由于查询中存在的所有字段都是索引的一部分,所以MongoDB查询指定条件匹配,并使用相同的索引返回结果,而不会实际查找文档。由于索引存在于RAM/内存中,与通过扫描文档获取数据相比,从索引获取数据更快。

使用覆盖查询

要测试覆盖的查询,请在users集合中考虑以下文档 –

{    "_id": ObjectId("234324fd852426020001111"),    "contact": "13800138000",    "dob": "1991-11-11",    "gender": "M",    "name": "Maxsu",    "user_name": "user_maxsu" } 

首先使用以下查询在users集合 的字段:genderuser_name 上创建一个复合索引 –

> db.users.ensureIndex({gender:1,user_name:1}) 

现在,这个索引将覆盖以下查询 –

>db.users.find({gender:"M"},{user_name:1,_id:0}) 

也就是说,对于上述查询,MongoDB不会查找数据库文档。相反,它将从索引数据中获取所需的数据。

由于索引不包括_id字段,在上面示例中,已经将其从查询的结果集中明确排除,因为MongoDB默认情况下在每个查询中返回_id字段。 所以下面的查询不会在上面创建的索引中被覆盖(查询有返回_id字段) –

>db.users.find({gender:"M"},{user_name:1}) 

最后,请记住,如果有下列情况,则索引无法覆盖查询 –

  • 任何索引的字段是一个数组
  • 任何索引的字段是一个子文档

  

从零到一,创造未来!跨零综合IT问题解决服务站,欢迎你的到来。Oracle数据库教程 mongodb数据库教程/a> 只为你绽放。

本文固定链接: http://kua0.com/2019/04/01/mongodb数据库教程-mongodb覆盖查询/

为您推荐

发表评论

电子邮件地址不会被公开。 必填项已用*标注