MongoDB: cursor.explain () метод
cursor.explain
Метод cursor.explain () используется для предоставления информации о плане запроса для метода dd.collection.find ().
Синтаксис:
cursor.explain (подробность)
Параметры:
название | Описание | Необходимые / Необязательный | Тип |
---|---|---|---|
подробный | Указывает, следует ли учитывать эффекты методов cursor.skip () и cursor.limit () в счетчике. По умолчанию метод count () игнорирует эффекты cursor.skip () и cursor.limit (). Установите для applySkipLimit значение true, чтобы учесть влияние этих методов. | Необязательный | строка |
Вернуть
Метод объяснение () возвращает документ с планом запроса и, необязательно, статистикой выполнения.
Образец документа в коллекции ресторанов:
{
"address": {
"building": "1007",
"coord": [ -73.856077, 40.848447 ],
"street": "Morris Park Ave",
"zipcode": "10462"
},
"borough": "Bronx",
"cuisine": "Bakery",
"grades": [
{ "date": { "$date": 1393804800000 }, "grade": "A", "score": 2 },
{ "date": { "$date": 1378857600000 }, "grade": "A", "score": 6 },
{ "date": { "$date": 1358985600000 }, "grade": "A", "score": 10 },
{ "date": { "$date": 1322006400000 }, "grade": "A", "score": 9 },
{ "date": { "$date": 1299715200000 }, "grade": "B", "score": 14 }
],
"name": "Morris Park Bake Shop",
"restaurant_id": "30075445"
}
Пример: метод db.collection.explain () в режиме queryPlanner
В следующем примере выполняется режим многословия queryPlanner, который возвращает информацию о планировании запроса для указанной операции count ():
db.restaurants.explain().find( { "cuisine": "Bakery", "address.zipcode": "10462" } ).count();
Выход:
> db.restaurants.explain (). find ({"kitchen": "Bakery", "address.zipcode": "10462"}) .count (); { "queryPlanner": { "plannerVersion": 1, "namespace": "test.restaurants", "indexFilterSet": ложь, "parsedQuery": { "$ and": [ { "address.zipcode": { "$ eq": "10462" } }, { "кухня": { "$ eq": "Пекарня" } } ] }, "WinningPlan": { "stage": "COUNT", "inputStage": { "stage": "COLLSCAN", "фильтр": { "$ and": [ { "address.zipcode": { "$ eq": "10462" } }, { "кухня": { "$ eq": "Пекарня" } } ] }, «направление»: «вперед» } }, "rejectedPlans": [] }, "serverInfo": { "хост": "сервер", «порт»: 27017, «версия»: «3.0.7», "gitVersion": "6ce7cbe8c6b899552dadd907604559806aa2e9bd" }, "хорошо": 1 }
Пример: метод db.collection.explain (), использующий режим executeStats
В следующем примере db.collection.explain () запускается в режиме многословия executeStats, чтобы вернуть информацию о планировании и выполнении запроса для указанной операции find ():
db.restaurants.explain("executionStats").find(
{ "cuisine": 1, "borough": "Manhattan"}
);
Выход:
> db.restaurants.explain ("executeStats"). find ( ... {"кухня": 1, "городской округ": "Манхэттен"} ...); { "queryPlanner": { "plannerVersion": 1, "namespace": "test.restaurants", "indexFilterSet": ложь, "parsedQuery": { "$ and": [ { "Город": { "$ eq": "Манхэттен" } }, { "кухня": { "$ eq": 1 } } ] }, "WinningPlan": { "stage": "COLLSCAN", "фильтр": { "$ and": [ { "Город": { "$ eq": "Манхэттен" } }, { "кухня": { "$ eq": 1 } } ] }, «направление»: «вперед» }, "rejectedPlans": [] }, "executeStats": { "executeSuccess": правда, "nReturned": 0, "executeTimeMillis": 86, "totalKeysExamined": 0, "totalDocsExamined": 25359, "исполнительные этапы": { "stage": "COLLSCAN", "фильтр": { "$ and": [ { "Город": { "$ eq": "Манхэттен" } }, { "кухня": { "$ eq": 1 } } ] }, "nReturned": 0, "executeTimeMillisEstimate": 50, «работает»: 25465, «продвинутый»: 0, «NeedTime»: 25360, «NeedFetch»: 104, «saveState»: 245, "restoreState": 245, "isEOF": 1, «делает недействительными»: 0, «направление»: «вперед», "docsExamined": 25359 } }, "serverInfo": { "хост": "сервер", «порт»: 27017, «версия»: «3.0.7», "gitVersion": "6ce7cbe8c6b899552dadd907604559806aa2e9bd" }, "хорошо": 1 }
Получить данные о ресторанах здесь
Поведение
Режимы многословия
В изолированном кластере count () может привести к неточному подсчету, если существуют потерянные документы или выполняется миграция чанка.
Режим queryPlanner
MongoDB запускает оптимизатор запросов, чтобы выбрать выигрышный план для оцениваемой операции. cursor.explain () возвращает информацию queryPlanner для оцениваемого метода.
Режим executeStats
cursor.explain () возвращает информацию queryPlanner и executeStats для оцениваемого метода. Тем не менее, executeStats не предоставляет информацию о выполнении запроса для отклоненных планов.
allPlansExecution Mode
cursor.explain () возвращает информацию queryPlanner и executeStats для оцениваемого метода. ExecutionStats включает в себя информацию о выполнении завершенного запроса для выигрышного плана.
db.collection.explain (). найти ()
db.collection.explain (). find () похож на db.collection.find (). объяснение () со следующими ключевыми отличиями:
- Конструкция db.collection.explain (). Find () допускает дополнительную цепочку модификаторов запросов.
- Функция db.collection.explain (). Find () возвращает курсор, который требует вызова .next () или его псевдонима .finish () для возврата результатов объяснения ().
Предыдущая: метод cursor.count ()
Далее: cursor.forEach () метод
Новый контент: Composer: менеджер зависимостей для PHP , R программирования