Nuevo en la versión 1.4.
Definición
Parámetros
$explainable:MongoDB\Operation\Explainable- El mandato de explicar.
$options: matrizUna matriz que especifica las opciones deseadas.
NombreTipoDescripcióncomment
mixto
Permite a los usuarios especificar un comentario arbitrario para ayudar a rastrear la operación a través del generador de perfilesde base de datos, salidacurrentOpy registros.
Esta opción está disponible desde MongoDB 4.4 y generará una excepción en el momento de ejecución si se especifica para una versión de servidor anterior.
El valor predeterminado es
commentde la operación explicada (si existe alguna).Novedades en la versión 1.13.
readPreference
Preferencia de lectura para la operación. El valor predeterminado es la preferencia de lectura de la colección.
typeMap
arreglo
El mapa de tipos que se aplica a los cursores y que determina cómo se convierten los documentos BSON a valores PHP. El valor predeterminado es el mapa de tipos de la colección.
Esto se utilizará para el documento de resultado del comando devuelto.
verbosidad
string
Return Values
Una matriz u objeto con el documento resultante del comando explain. El tipo de retorno dependerá de la typeMap opción.
Errores/Excepciones
MongoDB\Exception\UnsupportedException si se utilizan opciones que no son compatibles con el servidor seleccionado (porcollation readConcernwriteConcernejemplo,,,).
MongoDB\Exception\InvalidArgumentException para errores relacionados con el análisis de parámetros u opciones.
MongoDB\Driver\Exception\RuntimeException para otros errores en el nivel de extensión (por ejemplo, errores de conexión).
Comandos explicables
Los comandos explicables incluyen, entre otros:
MongoDB\Operation\AggregateMongoDB\Operation\CountMongoDB\Operation\DeleteManyMongoDB\Operation\DeleteOneMongoDB\Operation\DistinctMongoDB\Operation\FindMongoDB\Operation\FindOneMongoDB\Operation\FindOneAndDeleteMongoDB\Operation\FindOneAndReplaceMongoDB\Operation\FindOneAndUpdateMongoDB\Operation\UpdateManyMongoDB\Operation\UpdateOne
Ejemplos
Este ejemplo explica un comando de conteo.
$collection = (new MongoDB\Client)->test->restaurants; $count = new MongoDB\Operation\Count( $collection->getDatabaseName(), $collection->getCollectionName(), ['cuisine' => 'Italian'] ); $result = $collection->explain($count); var_dump($result);
El resultado sería entonces similar a lo siguiente:
object(MongoDB\Model\BSONDocument)#29 (1) { ["storage":"ArrayObject":private]=> array(4) { ["queryPlanner"]=> object(MongoDB\Model\BSONDocument)#21 (1) { ["storage":"ArrayObject":private]=> array(6) { ["plannerVersion"]=> int(1) ["namespace"]=> string(16) "test.restaurants" ["indexFilterSet"]=> bool(false) ["parsedQuery"]=> object(MongoDB\Model\BSONDocument)#15 (1) { ["storage":"ArrayObject":private]=> array(1) { ["cuisine"]=> object(MongoDB\Model\BSONDocument)#14 (1) { ["storage":"ArrayObject":private]=> array(1) { ["$eq"]=> string(7) "Italian" } } } } ["winningPlan"]=> object(MongoDB\Model\BSONDocument)#19 (1) { ["storage":"ArrayObject":private]=> array(2) { ["stage"]=> string(5) "COUNT" ["inputStage"]=> object(MongoDB\Model\BSONDocument)#18 (1) { ["storage":"ArrayObject":private]=> array(3) { ["stage"]=> string(8) "COLLSCAN" ["filter"]=> object(MongoDB\Model\BSONDocument)#17 (1) { ["storage":"ArrayObject":private]=> array(1) { ["cuisine"]=> object(MongoDB\Model\BSONDocument)#16 (1) { ["storage":"ArrayObject":private]=> array(1) { ["$eq"]=> string(7) "Italian" } } } } ["direction"]=> string(7) "forward" } } } } ["rejectedPlans"]=> object(MongoDB\Model\BSONArray)#20 (1) { ["storage":"ArrayObject":private]=> array(0) { } } } } ["executionStats"]=> object(MongoDB\Model\BSONDocument)#27 (1) { ["storage":"ArrayObject":private]=> array(7) { ["executionSuccess"]=> bool(true) ["nReturned"]=> int(0) ["executionTimeMillis"]=> int(24) ["totalKeysExamined"]=> int(0) ["totalDocsExamined"]=> int(25359) ["executionStages"]=> object(MongoDB\Model\BSONDocument)#25 (1) { ["storage":"ArrayObject":private]=> array(14) { ["stage"]=> string(5) "COUNT" ["nReturned"]=> int(0) ["executionTimeMillisEstimate"]=> int(20) ["works"]=> int(25361) ["advanced"]=> int(0) ["needTime"]=> int(25360) ["needYield"]=> int(0) ["saveState"]=> int(198) ["restoreState"]=> int(198) ["isEOF"]=> int(1) ["invalidates"]=> int(0) ["nCounted"]=> int(1069) ["nSkipped"]=> int(0) ["inputStage"]=> object(MongoDB\Model\BSONDocument)#24 (1) { ["storage":"ArrayObject":private]=> array(14) { ["stage"]=> string(8) "COLLSCAN" ["filter"]=> object(MongoDB\Model\BSONDocument)#23 (1) { ["storage":"ArrayObject":private]=> array(1) { ["cuisine"]=> object(MongoDB\Model\BSONDocument)#22 (1) { ["storage":"ArrayObject":private]=> array(1) { ["$eq"]=> string(7) "Italian" } } } } ["nReturned"]=> int(1069) ["executionTimeMillisEstimate"]=> int(20) ["works"]=> int(25361) ["advanced"]=> int(1069) ["needTime"]=> int(24291) ["needYield"]=> int(0) ["saveState"]=> int(198) ["restoreState"]=> int(198) ["isEOF"]=> int(1) ["invalidates"]=> int(0) ["direction"]=> string(7) "forward" ["docsExamined"]=> int(25359) } } } } ["allPlansExecution"]=> object(MongoDB\Model\BSONArray)#26 (1) { ["storage":"ArrayObject":private]=> array(0) { } } } } ["serverInfo"]=> object(MongoDB\Model\BSONDocument)#28 (1) { ["storage":"ArrayObject":private]=> array(4) { ["host"]=> string(9) "localhost" ["port"]=> int(27017) ["version"]=> string(5) "3.6.1" ["gitVersion"]=> string(40) "025d4f4fe61efd1fb6f0005be20cb45a004093d1" } } ["ok"]=> float(1) } }
Ver también
Explicar la referencia de comandos en el manual de MongoDB