кодесурса
«MongoDB

MongoDB: cursor.explain () метод

script1adsense2code
script1adsense3code

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 программирования


script1adsense4code
script1adsense5code
disqus2code
script1adsense6code
script1adsense7code
script1adsense8code
buysellads2code