亚洲区国产区激情区无码区,国产成人mv视频在线观看,国产A毛片AAAAAA,亚洲精品国产首次亮相在线

MongoDB 涵蓋查詢

在本章中,我們將學(xué)習(xí)涵蓋的查詢。

什么是涵蓋查詢?

根據(jù)官方的MongoDB文檔,涵蓋的查詢是這樣的查詢,其中-

  • 查詢中的所有字段都是索引的一部分。

  • 查詢中返回的所有字段都在同一索引中。

由于查詢中存在的所有字段都是索引的一部分,因此MongoDB會匹配查詢條件,并使用相同的索引返回結(jié)果,而無需實際查看文檔內(nèi)部。由于索引存在于RAM中,因此與通過掃描文檔獲取數(shù)據(jù)相比,從索引獲取數(shù)據(jù)要快得多。

使用覆蓋查詢

要測試涵蓋的查詢,請看sers集合中的以下文檔-

{
   "_id": ObjectId("53402597d852426020000003"),
   "contact": "987654321",
   "dob": "01-01-1991",
   "gender": "M",
   "name": "Tom Benzamin",
   "user_name": "tombenzamin"
}

我們將首先使用以下查詢在gender和user_name字段上為users集合創(chuàng)建一個復(fù)合索引–

>db.users.createIndex({gender:1,user_name:1})
{
	"createdCollectionAutomatically" : false,
	"numIndexesBefore" : 1,
	"numIndexesAfter" : 2,
	"ok" : 1
}

現(xiàn)在,該索引將涵蓋以下查詢-

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

也就是說,對于上面的查詢,MongoDB 不會查看數(shù)據(jù)庫文檔。相反,它將從索引數(shù)據(jù)中獲取所需的數(shù)據(jù),這是非??斓?。

由于索引不包含_id字段,因此我們已將其從查詢的結(jié)果集中明確排除,因為MongoDB默認情況下會在每個查詢中返回_id字段。所以下面的查詢不會包含在上面創(chuàng)建的索引中–

>db.users.find({gender:"M"},{user_name:1})
{ "_id" : ObjectId("53402597d852426020000003"), "user_name" : "tombenzamin" }

最后,請記住,如果,索引不能覆蓋查詢

  • 任何索引字段都是數(shù)組

  • 任何索引字段都是子文檔