Подтвердить что ты не робот

Explain() в Mongodb: различия между "nscanned" и "nscannedObjects"

Я не могу получить точную разницу между "nscanned" и "nscannedObjects" в ответе на запрос Mongodb.

Вкл MongoDB Объяснить документацию Я могу прочитать:

nscanned Количество элементов (документов или записей индекса). Предметы могут быть объектами или индексными ключами. Если включен "охваченный индекс", nscanned может быть выше, чем nscannedObjects.

nscannedObjects Количество отсканированных документов.

Чем отличаются эти два поля? И более конкретно, что именно означает, когда у меня есть запрос, который использует BtreeCursor (индекс), и эти два поля имеют два разных значения, например:

{
    "cursor" : "BtreeCursor a_1_b_1",
    "isMultiKey" : false,
    "n" : 5,
    "nscannedObjects" : 5,
    "nscanned" : 9, 
    (...)
}

Я знаю, что такое закрытый индекс. Я хотел бы точно понять, что сделал запрос в приведенном выше примере. Прошло ли это ( "отсканировано" ) 9 элементов (nscanned = 9), где все они являются индексами и считывают ( "проверяют" ) значение только 5 из них (nscannedObjects = 5) для создания набора результатов?

4b9b3361

Ответ 1

Это означает, что:
Запрос возвратил 5 документов - n
отсканировано 9 документов из индекса - nscanned
а затем прочитайте 5 полных документов из коллекции - nscannedObjects

Аналогичный пример приведен в:
http://docs.mongodb.org/manual/reference/method/cursor.explain/#cursor.explain

Ответ 2

если "курсор" - это индекс == > nscanned = no. индекса сканирования else if "cursor" - это FullTableScan == > nscanned = no. отсканированного документа

nscannedObjects == > Число отсканированных документов

при запросе попытайтесь свести к минимуму все количество, т.е. nscanned и nscannedObjects являются минимальными, так как ваш запрос должен работать быстрее!