gpt4 book ai didi

mongodb - 为什么 mongodb explain 查询输出中的 indexonly 属性值为 false

转载 作者:可可西里 更新时间:2023-11-01 09:57:25 25 4
gpt4 key购买 nike

我有一个名为customers 的简单集合,如下所示

 db.customers.find().pretty()

{
"_id" : ObjectId("524eb09ca71b72672e65ebb6"),
"name" : "kiran",
"occupation" : "SelfEmployeed",
"country" : "IND"
}
{
"_id" : ObjectId("524eb0a4a71b72672e65ebb7"),
"name" : "Mark",
"occupation" : "Architect",
"country" : "US"
}
{
"_id" : ObjectId("524eb0aba71b72672e65ebb8"),
"name" : "beast",
"occupation" : "housewife",
"country" : "UK"
}
{
"_id" : ObjectId("524eb0b2a71b72672e65ebb9"),
"name" : "Philip",
"occupation" : "Engineer",
"country" : "SWE"
}

我已经在 name 和 country 字段上创建了索引,如下所示

 db.customers.ensureIndex({name : 1}, {"unique" : false})



db.customers.ensureIndex({country : 1}, {"unique" : false})

索引已创建

 db.customers.getIndexKeys()

[ { "_id": 1 }, { "name": 1 }, { "country": 1 } ]

这是我查询解释的结果

db.customers.find({name : "Mark"}).explain()

{
"cursor" : "BtreeCursor name_1",
"isMultiKey" : false,
"n" : 1,
"nscannedObjects" : 1,
"nscanned" : 1,
"nscannedObjectsAllPlans" : 1,
"nscannedAllPlans" : 1,
"scanAndOrder" : false,
"indexOnly" : false,
"nYields" : 0,
"nChunkSkips" : 0,
"millis" : 0,
"indexBounds" : {
"name" : [
[
"Mark",
"Mark"
]
]
},
"server" : "************"
}

为什么indexonly属性值为false??

我看过类似的问题,解释是由于

indexonly 为 false,因为它不会仅使用索引,因为您将通过该查询检索其他未编入索引的字段。

请让我知道这里其他字段的含义是什么??

最佳答案

一些搜索实际上会给你一个我之前回答过的关于这个主题的问题。

原因是这样的:

db.customers.find({name : "Mark"}).explain()

没有projection,MongoDB在这种情况下不看实际文档怎么知道索引覆盖了return呢?

类似于

SELECT * from customers

SELECT d from customers

不看怎么知道*d

关于mongodb - 为什么 mongodb explain 查询输出中的 indexonly 属性值为 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19181188/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com