Este documento describe los errores del compilador MongoSQL de MongoDB. Más específicamente, explica los códigos de error, su significado, las causas comunes de cada error y su resolución (si es autocorregible). Cada tipo de error (esquema, analizador y algebrizador) se detalla en secciones independientes.
Resumen de los códigos de error que comienzan con "1"
Los siguientes errores se producen cuando algo falla al gestionar el esquema de la fuente de datos (colección) desde la que la consulta SQL consulta datos. Estos errores suelen ocurrir al usar tipos de datos de forma incorrecta o no válida.
Código de error | Descripción del error |
|---|---|
Una función (por ejemplo, Sin, Abs, Round) tiene un número incorrecto de argumentos. | |
La operación especificada (por ejemplo, Sub, And, Substring) tiene argumentos del tipo incorrecto (por ejemplo, cadena, int). | |
El argumento proporcionado a la agregación no es de un tipo comparable a sí mismo. | |
| |
La operación de comparación especificada (por ejemplo, Lte, Between) no se pudo realizar debido a los tipos incomparables de sus operandos (por ejemplo, comparar un int con una cadena). | |
No se puede acceder al campo porque no se puede encontrar (y probablemente no existe). | |
La cardinalidad del conjunto de resultados de una subconsulta puede ser mayor que 1. El conjunto de resultados DEBE tener una cardinalidad de 0 o 1. | |
No se puede ordenar por la clave especificada porque es de un tipo que no se puede comparar consigo mismo. | |
No se puede agrupar por la clave especificada porque es de un tipo que no se puede comparar consigo mismo. | |
El nombre de UNWIND INDEX entra en conflicto con el nombre del campo existente. | |
No se pudo encontrar la colección en la base de datos especificada. | |
Se detectó JSON extendido en la operación de comparación. MongoSQL no admite comparaciones directas con JSON extendido. Utilice la conversión de datos (consulte "Pasos de resolución" para ver un ejemplo). | |
Un campo tiene un tipo BSON no admitido. | |
Un campo de tipo de datos binarios tiene el subtipo no admitido de uuid old (subtipo 3). |
Descripción general de los códigos de error que comienzan con "2"
Ocurren los siguientes errores cuando algo sale mal al analizar (interpretar) la consulta SQL. Este tipo de error significa que la sintaxis de la query no es válida y, por lo tanto, la query no puede ser analizada y, en consecuencia, falla. La sintaxis de la query SQL debe corregirse para resolver un error de análisis.
Código de error | Descripción del error |
|---|---|
Este error es un comodín para todos los errores del analizador, excepto el token no reconocido. | |
Se encontró un token inesperado o no reconocido. |
Descripción general de los códigos de error que comienzan con "3"
Los siguientes errores ocurren cuando algo sale mal al convertir la consulta SQL a MQL, como recuentos de argumentos incorrectos o no poder encontrar una referencia de campo o una fuente de datos.
Código de error | Descripción del error |
|---|---|
Una lista SELECT con varios valores no puede contener un | |
La fuente de datos de la matriz contiene un identificador. Las fuentes de datos de la matriz deben ser constantes. | |
SELECT DISTINCT no está permitido. | |
No se permite UNIÓN distinta. | |
No se pudo encontrar una fuente de datos referenciada en la lista SELECT. | |
No se pudo encontrar un campo en ninguna fuente de datos. | |
Un campo existe en múltiples fuentes de datos y es ambiguo. | |
El argumento * sólo es válido en la función de agregación COUNT. | |
Se utilizó una función de agregación en una posición escalar. | |
Se utilizó una función escalar en una posición de agregación. | |
Se encontró una expresión de no agregación en una lista de funciones de agregación GROUP BY. | |
Las funciones de agregación deben tener exactamente un argumento. | |
Las funciones escalares no admiten DISTINCT. | |
Una fuente de datos derivada tiene campos superpuestos. | |
A una unión externa le falta una condición de unión. Las uniones externas deben especificar una condición de unión. | |
No se pudo crear un entorno de esquema debido a un campo duplicado. | |
Las expresiones de subconsulta deben tener un grado de 1. | |
Un documento tiene varios campos con el mismo nombre. | |
La misma opción FLATTEN se define más de una vez. | |
La información del esquema es insuficiente para permitir la nivelación de la fuente de datos. | |
Un campo dentro del esquema es un tipo de objeto polimórfico (es decir, considere un campo que podría ser | |
La misma opción UNWIND se define más de una vez. | |
A UNWIND le falta la opción de ruta. UNWIND debe especificar una opción PATH. | |
La opción UNWIND PATH no es un identificador. Debe serlo. | |
El tipo de destino del CAST es un tipo no válido (es decir, es un tipo desconocido o un tipo para el cual MongoSQL no admite la conversión). | |
Una clave de ordenación no es válida porque utiliza expresiones complejas (es decir, |
Descripción general de los códigos de error que comienzan con "4"
Los siguientes errores ocurren cuando algo sale mal al usar la opción excludeNamespaces al utilizar la agregación $sql.
Código de error | Descripción del error |
|---|---|
El conjunto de resultados sin espacio de nombres no se puede devolver debido a conflictos de nombres de campo. |
Error 1001
Descripción: Una función (por ejemplo, Sin, Abs, Round) tiene un número incorrecto de argumentos.
Causas comunes: Una función tiene un argumento extra o le falta uno. Por ejemplo, en,
SELECT ROUND(a,1,5) FROM foodondeaesintun, ROUND tiene un argumento extra.Pasos de resolución: El mensaje de error indica qué función tiene un número incorrecto de argumentos y cuántos debería tener. Utilice esta información para corregir su consulta. Consulta de ejemplo
SELECT ROUND(a,1) FROM foocorregida:.
Error 1002
Descripción: La operación especificada (por ejemplo, Sub, And, Substring) tiene un(os) argumento(s) del tipo incorrecto (por ejemplo, string, int).
Causas comunes: Se usó por error un campo de tipo incorrecto en la función especificada. Por ejemplo,,
SELECT ROUND(str,5) FROM foodondestres del tipo cadena, causa este error.Pasos de resolución: El mensaje de error indica qué función tiene un argumento de tipo incorrecto y cuál es el tipo esperado. Utilice esta información para corregir su query. query de ejemplo corregida:
SELECT ROUND(a,5) FROM fooen dondeaes un(a)int.
Error 1003
Descripción: El argumento proporcionado a la agregación no es de un tipo comparable a sí mismo.
- Causas comunes: La columna que intenta agregar es de tipo o,
objectarrayque no son comparables entre sí. - Por ejemplo,
SELECT * FROM myCol GROUP BY a AGGREGATE MIN(obj) as mindondeobjes unobjectprovoca este error.
- Causas comunes: La columna que intenta agregar es de tipo o,
Pasos de resolución: Utilice las funciones de agregación solo en columnas del tipo adecuado. Si desea agregar un valor dentro
arraydeobjecto, utilice las palabras clave de origen de datos UNWIND o FLATTEN. Consulta de ejemplo corregida:SELECT * FROM myCol GROUP BY a AGGREGATE MIN(a) as mindondeaintes.
Error 1004
Descripción:
COUNT(DISTINCT *)No es compatible.Causas comunes: No se admite el uso de
COUNT(DISTINCT *)( ).SELECT COUNT(DISTINCT *) FROM fooPasos de resolución: elimine cualquier uso de
COUNT(DISTINCT *)de sus consultas.
Error 1005
Descripción: La operación de comparación especificada (por ejemplo, Lte, Between) no se pudo ejecutar debido a que los tipos de sus operandos no son comparables (es decir, comparar un int con una cadena).
Causas comunes: Se utilizaron campos de dos tipos diferentes en la operación de comparación especificada. Por ejemplo,,
SELECT * FROM foo WHERE a <= bdondeaes unintybesstringun. Además, tenga en cuenta queobjectsyarraysno son tipos comparables y no se pueden utilizar en operaciones de comparación.Pasos de resolución: El mensaje de error indica qué operación de comparación tiene tipos conflictivos. Utilice esta información para corregir su consulta. Consulta de ejemplo corregida:,
SELECT * FROM foo WHERE a1 <= a2dondea1ya2son delinttipo.
Error 1007
Descripción: No se puede acceder a un campo porque no se puede encontrar (y probablemente no existe).
Causas comunes: Intenta acceder a un campo inexistente, probablemente debido a un error tipográfico. Por ejemplo,,
SELECT foo.f FROM foodondefes un campo inexistente, causa este error.Pasos para la resolución: Siempre que sea posible, el mensaje de error sugiere nombres de campo similares que podrían haber sido la entrada deseada. Sin embargo, si no se encuentra ninguno similar, MongoSQL no proporciona sugerencias de nombres de campo. Utilice esta información para corregir su consulta. Consulta de ejemplo corregida:
SELECT foo.a FROM foodondeaexiste comoacampofoode.
Error 1008
Descripción: La cardinalidad del conjunto de resultados de una subconsulta escalar puede ser mayor 1 que. El conjunto de resultados DEBE tener una cardinalidad de 0 1o.
Causas comunes: Su subconsulta escalar podría devolver más de 1 documentos (o filas en SQL). Por ejemplo,
SELECT (SELECT a FROM foo) FROM barcausa este error porque(SELECT a FROM foo)podría devolver más de 1 documentos (o filas).Pasos de resolución: Añada un
LIMIT 1a su subconsulta para garantizar que solo 1 se devuelva documento/fila. Ejemplo correcto deSELECT (SELECT a FROM foo LIMIT 1) FROM barconsulta:.
Error 1010
Descripción: No se puede ordenar por la clave especificada, porque es de un tipo que no se puede comparar consigo mismo.
Causas comunes: La columna que intenta ordenar es de tipo
objectarrayo, que no son tipos comparables entre sí. Por ejemplo,SELECT * FROM foo ORDER BY objdondeobjes unobjectgenera este error.Pasos de resolución: Ordene únicamente las columnas del tipo adecuado. Si desea ordenar por un valor dentro
arraydeobjecto, utilice las palabras clave de origen de datos UNWIND o FLATTEN. Consulta de ejemplo corregida:SELECT * FROM foo ORDER BY adondeaintes.
Error 1011
Descripción: No se puede agrupar por la clave especificada, porque es de un tipo que no se puede comparar consigo mismo.
Causas comunes: La columna por la que intenta agrupar es de tipo o,
objectarrayque no son tipos comparables. Por ejemplo,SELECT * FROM foo GROUP BY objdondeobjes unobjectgenera este error.Pasos de resolución: Agrupe únicamente por columnas del tipo adecuado. Si desea agrupar por un valor dentro
arraydeobjecto, utilice las palabras clave de origen de datos UNWIND o FLATTEN. Consulta de ejemplo corregida:SELECT * FROM foo ORDER BY adondeaintes.
Error 1014
Descripción: El nombre del ÍNDICE DESENROLLADO entra en conflicto con el nombre de campo existente.
Causas comunes: El nombre del índice coincide con el nombre
foode un campo existente. Por ejemplo, si la colección tiene un campo,bla consultaSELECT * FROM UNWIND(foo WITH PATH => a, INDEX => b)causa este error.Pasos de resolución: Cambie el nombre de ÍNDICE por uno que no sea un campo existente. Consulta de ejemplo corregida:
SELECT * FROM UNWIND(foo WITH PATH => a, INDEX => b2)dondeb2no es un nombre de campo existente.
Error 1016
Descripción: No se puede encontrar la colección en la base de datos especificada.
Causas comunes: Es posible que esté buscando en la base de datos incorrecta o que haya cometido un error tipográfico que impide encontrar la colección. Por ejemplo, si la colección
bazno existe, la consultaSELECT * FROM bazgenera este error.Pasos para la resolución: Asegúrese de que todo esté escrito correctamente y de que esté buscando en la base de datos correcta. Consulta de ejemplo corregida:
SELECT * FROM foodondefooexiste en la base de datos actual.
Error 1017
Descripción: Se detectó JSON extendido en la operación de comparación. MongoSQL no admite comparaciones directas con JSON extendido. Utilice la conversiónde datos (consulte "Pasos de resolución" para ver un ejemplo).
Causas comunes: Usar JSON extendido en consultas y esperar que se convierta implícitamente al tipo de dato correcto. Por ejemplo, alguien podría escribir la consulta
select _id from customers where _id = '{"$oid":"5ca4bbcea2dd94ee58162a6a"}'porque cree que la cadena JSON extendida se convierte implícitamenteObjectIDa. Sin embargo, esto no es así.Pasos de resolución: No utilice el formato JSON extendido y utilice siempre la conversión CAST explícita. El mensaje de error intenta recomendar la conversión. Consulta de ejemplo
select _id from customers where _id = CAST('5ca4bbcea2dd94ee58162a6a' as ObjectID)corregida:. Esta consulta convierte explícitamenteObjectIDa.
Error 1018
Descripción: Un campo tiene un tipo BSON no admitido.
Causas comunes: Un campo tiene un tipo BSON no compatible con MongoSQL. Por ejemplo, si
foola colección tiene un campobde tipo,undefinedla consultaSELECT * FROM foocausaría este error.Pasos para la resolución: Cambie el tipo BSON a uno compatible con MongoSQL. El mensaje de error indica qué tipos de BSON son compatibles.. Consulta de ejemplo corregida:
SELECT * FROM foodondefooexiste en la base de datos actual ybno es delundefinedtipo.
Error 1019
Descripción: Un campo de tipo de datos binarios tiene el subtipo no admitido de uuid old.
Causas comunes: Históricamente, los distintos controladores han escrito UUID con diferentes órdenes de bytes. Esto puede ocurrir con datos antiguos escritos por un controlador que utiliza el tipo UUID, ahora incompatible.
Pasos de resolución: Atlas SQL no admite la consulta de estos datos.
Error 2000
Descripción: Este error es un comodín para todos los errores del analizador, excepto el token no reconocido.
Causas comunes: Este error puede tener diversos significados, ya que es un error general. Sin embargo, generalmente significa que se usó incorrectamente algún token (palabra clave).
Pasos de resolución: Este error puede generar varios mensajes diferentes, por lo que es importante prestar atención a esos mensajes. Además, es buena idea revisar la input query para garantizar que cada cláusula (así como la instrucción SQL en su conjunto) esté redactada según lo especificado por las directrices.
Error 2001
Descripción: Se encontró un token inesperado o no reconocido.
Causas más comunes: Algo podría haberse escrito mal o colocado en el orden/formato incorrecto. Por ejemplo,
SELECT ** FROM foo AS fprovoca este error debido al tipo**.Pasos de resolución: Asegúrate de que todo esté escrito correctamente y en el orden/formato correcto. Además, este error sugiere una lista de tokens que quizás hayas pretendido colocar. Ejemplo de query corregido:
SELECT * FROM foo AS f.
Error 3002
Descripción: Una lista SELECT con varios valores no puede contener un sin espacio de nombres
*(es decir,SELECT a, *, b FROM myTableno se admite). Un sin espacio de nombres*debe usarse solo.Causas comunes: seleccionar
*y cualquier otra cosa en la misma consulta como se muestra en estaSELECT *, a from fooconsulta:.Pasos de resolución: seleccione solo
*(esSELECT * FROM ...decir,) o seleccione valores múltiples y no incluya*(esSELECT a, b FROM ...decir,).
Error 3004
Descripción: La fuente de datos de la matriz contiene referencias. Las fuentes de datos de la matriz deben ser constantes.
Causas comunes: acceso a un campo en una fuente de datos de matriz como se muestra en esta
SELECT * FROM [{'a': foo.a}] AS arrconsulta:.Pasos de resolución: Modifique la fuente de datos de la matriz para que solo contenga constantes. Consulta de ejemplo corregida:.
SELECT * FROM [{'a': 34}] AS arr
Error 3005
Descripción: SELECT DISTINCT no está permitido.
Causas comunes:
SELECT DISTINCTSe utilizó en una consulta. Por ejemplo, la consultaSELECT DISTINCT * from foocausa este error.Pasos de resolución: No utilice
SELECT DISTINCTen una consulta.
Error 3006
Descripción: No se permite una unión distinta. Solo se puede usar
UNION ALL(es decir, siempre se deben permitir valores duplicados).Causas comunes: Usar
UNIONen lugar deUNION ALL. Por ejemplo, la querySELECT a FROM foo AS foo UNION SELECT b, c FROM bar AS barcausa este error.Pasos de resolución: Use solo
UNION ALLal realizar uniones. Consulta de ejemplo corregida:.SELECT a FROM foo AS foo UNION ALL SELECT b, c FROM bar AS bar
Error 3007
Descripción: No se pudo encontrar una fuente de datos referenciada en la lista SELECT.
Causas comunes: Ejecutar algo
SELECT <field>.* FROM ...como donde<field>no tiene subcampos. Por ejemplo, la consultaSELECT a.* FROM foodondeaes unintcausa este error.Pasos de resolución: elimine cualquier acceso de campo que intente acceder a un campo que no existe.
Error 3008
Descripción: No se pudo encontrar un campo en ninguna fuente de datos.
Causas comunes: El campo está mal escrito, no existe o se está buscando en la colección incorrecta. Por ejemplo,
Select aa from foocausaría este error siaano existe en lafoocolección.Pasos para la resolución: Asegúrese de que el campo esté escrito correctamente y de que esté buscando en la colección correcta. Además, el mensaje de error sugiere campos similares que quizás haya intentado escribir.
Error 3009
Descripción: Un campo existe en múltiples fuentes de datos y es ambiguo.
Causas comunes: Dos o más campos tienen el mismo nombre en una colección (o en otra fuente de datos). Por ejemplo, si se supone que
aes un campofooen,SELECT a FROM foo AS coll JOIN foo AS coll2causaría este error porque las coleccionescollycoll2tienen elacampo, lo que haceaque sea ambiguo.Pasos para la resolución: Califique sus referencias (
<Collection>.<field>en lugarfieldde). En el ejemplo anterior,coll.aocoll2.asolucionarían este error.
Error 3010
Descripción: El argumento * solo es válido en la función de agregación COUNT.
Causas comunes: COUNT es la única operación de agregación que admite el argumento
*, es decir,COUNT(*). El paso del argumento*a cualquier otra operación, es decirSUM(*), provoca este error. Por ejemplo, la consultaSELECT * FROM foo AS arr GROUP BY a AS a AGGREGATE SUM(*) AS gsum.Pasos de resolución: Utilice únicamente
*como argumentoCOUNTpara.
Error 3011
Descripción: Se utilizó una función de agregación en una posición escalar.
Causas comunes: Uso de una función de agregación donde solo se puede usar una función escalar. Por ejemplo, la consulta
SELECT VALUE {'suma': SUM(a)} FROM db.bar AS bar GROUP BY a AS acausa este error porqueSUM(a)es una función de agregación.Pasos de resolución: elimine las funciones de agregación en lugares donde solo puede tener funciones escalares.
Error 3012
Descripción: Se utilizó una función escalar en una posición de agregación.
Causas comunes: Uso de una función escalar donde solo se puede usar una función de agregación. Por ejemplo, la consulta
SELECT * FROM foo GROUP BY a AGGREGATE round(a) AS roundcausa este error porqueroundes una función escalar.Pasos de resolución: elimine las funciones escalares en lugares donde solo pueda tener funciones de agregación.
Error 3013
Descripción: Se encontró una expresión de no agregación en una lista de funciones de agregación GROUP BY.
Causas comunes: Colocar cualquier cosa que no sea una función de agregación o escalar donde debería haber una agregación. (Utilizar una función escalar en lugar de una agregación provoca un error diferente: Error 3012) Por ejemplo, la query
SELECT * FROM foo GROUP BY a AGGREGATE COUNT(*) + 7 AS whateverprovoca este error, ya que hay una operación de suma junto con una agregación en lugar de solo una agregación.Pasos de resolución: Utilice agregaciones solo donde estén permitidas. Consulta de ejemplo corregida:.
SELECT * FROM foo GROUP BY a AGGREGATE COUNT(*) AS whatever
Error 3014
Descripción: Las funciones de agregación deben tener exactamente un argumento.
Causas comunes: Una función de agregación tiene más de un argumento. Por ejemplo, la consulta
SELECT * FROM foo GROUP BY a AGGREGATE min(a,b) AS mincausa este error porque proporciona dos argumentos para laminagregación.Pasos de resolución: Asegúrese de que sus agregaciones solo tengan un argumento. Elimine cualquier argumento adicional. Consulta de ejemplo
SELECT * FROM foo GROUP BY a AGGREGATE min(b) AS mincorregida:.
Error 3015
Descripción: Las funciones escalares no admiten DISTINCT.
Causas comunes: Uso
DISTINCTde en una función escalar. Por ejemplo, la consultaSELECT ROUND(DISTINCT a,2) FROM foocausa este error.Pasos de resolución: No utilices
DISTINCTen funciones escalares.DISTINCTsolo debe usarse en funciones de agregación. query de ejemplo corregida:SELECT ROUND(a,2) FROM foo.
Error 3016
Descripción: Una fuente de datos derivada tiene campos superpuestos.
Causas comunes: Incluir varias fuentes de datos con campos con el mismo nombre en una subconsulta provoca este error. Por ejemplo, si
barlas colecciones yfootienen campos con el mismo nombre, la consultaSELECT * FROM (SELECT * FROM foo AS foo, bar AS bar) AS derivedprovoca este error.Pasos de la resolución: Actualice los nombres de los campos comunes para que sean únicos en las distintas fuentes de datos. Una forma sencilla de lograrlo es crear un alias con un nombre único para los campos con el mismo nombre. Con esta técnica, aquí está nuestra consulta de ejemplo corregida:.
SELECT * FROM (SELECT a, b, c, ..., z, FROM foo, a AS bar_a, b AS bar_b, c AS bar_c, ..., z AS bar_z FROM bar) AS derived
Error 3019
Descripción: A una unión externa le falta una condición de unión. Las uniones externas deben especificar una condición de unión.
Causas comunes: A un OUTER JOIN le falta una condición JOIN. Por ejemplo, la query
SELECT * FROM foo AS foo LEFT OUTER JOIN bargenera este error, porque le falta la secciónON <condition>requerida en la query.Pasos de resolución: Agregar una condición JOIN (es
ON <condition>decir,). Consulta de ejemploSELECT * FROM foo AS foo LEFT OUTER JOIN bar ON a = acorregida:.
Error 3020
Descripción: No se pudo crear un entorno esquema debido a un campo duplicado.
Causas comunes: Varias colecciones tienen el mismo alias. Por ejemplo, la consulta
SELECT * FROM foo AS alias, bar AS aliascausa este error.Pasos de resolución: Asegúrese de que los alias sean únicos para las colecciones. Consulta de ejemplo
SELECT * from foo as foo_alias, bar as bar_aliascorregida:.
Error 3022
Descripción: Las expresiones de subconsulta escalares deben tener un grado 1 de.
Causas comunes: Selección de más de un campo (o columna en SQL) en una expresión de subconsulta escalar. Por ejemplo, la consulta
SELECT (SELECT * FROM foo LIMIT 1) FROM bar AS barcausa este error porque la subconsulta ejecuta y, por lo tanto,SELECT *selecciona varios campos.Pasos de resolución: Modifique su subconsulta para seleccionar solo un campo. Consulta de ejemplo corregida:
SELECT (SELECT a FROM foo LIMIT 1) FROM bar AS bar
Error 3023
Descripción: Un documento tiene varios campos con el mismo nombre.
Causas comunes: seleccionar varios campos de una colección y darles los mismos alias como se muestra en la siguiente
SELECT a AS alias, b AS alias FROM fooconsulta:.Pasos de resolución: Cambiar los alias duplicados de los campos por nombres únicos. Consulta de ejemplo
SELECT a as a_alias, b as b_alias FROM foocorregida:.
Error 3024
Descripción: La misma opción FLATTEN se define más de una vez.
Causas comunes: La misma opción se define más de una vez como lo muestra la siguiente consulta:
SELECT * FROM FLATTEN(foo WITH depth => 1, depth => 2).Pasos de resolución: Remueve cualquier opción duplicada para garantizar que cada opción solo se utilice una vez. query de ejemplo corregida:
SELECT * FROM FLATTEN(foo WITH depth => 1).
Error 3025
Descripción: La información del esquema es insuficiente para permitir el aplanamiento de la fuente de datos.
Causas comunes: Intentar aplanar una colección que no tiene suficiente información de esquema. Por ejemplo, suponiendo que tiene una colección llamada
noSchemaInfosin esquema definido, la consultaSELECT * FROM FLATTEN(noSchemaInfo)causa este error. Otra causa común es intentar aplanar una colección con un esquema o algún campo del esquema que tengaadditional_propertiesestablecidotrueen.Pasos de resolución: Defina todos los campos del esquema para garantizar que esté suficientemente definido. Además, evite
additional_propertiesestablecertrueen. En su lugar, defina el esquema por completo.
Error 3026
Descripción: Un campo dentro del esquema es un tipo de objeto polimórfico (es decir, considere un campo que podría ser
documentinto), por lo que no se puedenullmissingaplanar. Se permite el polimorfismo de objetos y. El aplanamiento solo funciona con tipos de objeto (también conocidos como documentos), por lo que si existe la posibilidad de que algún campo no sea un documento (a menos que las únicas otras posibilidades seannullmissingo), no se puede aplanar.Causas comunes: Intentar aplanar una colección que tiene un esquema que contiene un campo que es de un tipo de objeto Realm polimórfico. Por ejemplo, suponiendo que una colección denominada
colltiene un campo que es un tipo de objeto Realm polimórfico, entonces la consultaSELECT * FROM FLATTEN(coll)produce este error.Pasos para la resolución: Solo se pueden aplanar tipos de objeto. Para que un campo pueda aplanarse, su esquema DEBE ser un tipo de objeto. La única excepción a esta regla son los objetos que pueden ser nulos o faltantes; aún se pueden aplanar estos objetos a pesar de ser polimórficos. Para corregir este error, debe dejar de intentar aplanar colecciones que tengan campos con tipos de objeto polimórficos o cambiar el esquema de esos campos para que sean solo un tipo de objeto.
Error 3027
Descripción: La misma opción UNWIND se define más de una vez.
Causas comunes: Se utiliza la misma opción más de una vez como se muestra en la siguiente query:
SELECT * FROM UNWIND(foo WITH PATH => a, PATH => b).Pasos de resolución: Remueve cualquier opción duplicada para garantizar que cada opción solo se utilice una vez. query de ejemplo corregida:
SELECT * FROM UNWIND(foo WITH PATH => a).
Error 3028
Descripción: A UNWIND le falta la opción PATH. UNWIND debe especificar una opción PATH.
Causas comunes: A UNWIND le falta la opción PATH como lo muestra la siguiente
SELECT * FROM UNWIND(foo)consulta.Pasos de resolución: Agregar la opción PATH a la consulta UNWIND. Consulta de ejemplo corregida:.
SELECT * FROM UNWIND(foo WITH PATH => a)
Error 3029
Descripción: La opción UNWIND PATH no es un identificador; sin embargo, debe serlo.
Causas comunes: La opción UNWIND PATH no es un identificador como se muestra en la siguiente consulta
SELECT * FROM UNWIND(foo WITH PATH => {'a': []}.a).Pasos de resolución: Cambiar la opción UNWIND PATH por un identificador. Consulta de ejemplo
SELECT * FROM UNWIND(foo WITH PATH => a)corregida:.
Error 3030
Descripción: El tipo de destino del CAST es un tipo no válido (es decir, es un tipo desconocido o un tipo para el cual MongoSQL no admite la conversión).
- Causas comunes: Conversión a un tipo que MongoSQL no admite. Por ejemplo, la consulta
SELECT CAST(a AS DATE) FROM foo - Provoca este error porque
DATEno es un tipo de destino compatible.
- Causas comunes: Conversión a un tipo que MongoSQL no admite. Por ejemplo, la consulta
Pasos de resolución: Convertir solo a tipos de destino compatibles. Los tipos de destino válidos son ARRAY, DOCUMENT, DOUBLE, STRING, OBJECTID, BOOL, BSON_DATE, INT, LONG y DECIMAL, o cualquiera de sus92 alias de tipo SQL- correspondientes: REAL, FLOAT, VARCHAR, CHAR, CHARACTER, CHAR VARYING, CHARACTER VARYING, DEC, NUMERIC, BIT, BOOLEAN, TIMESTAMP, INTEGER, SMALLINT. Consulta de ejemplo
SELECT CAST(a AS BSON_DATE) FROM foocorregida:.
Error 3034
Descripción: Una clave de clasificación no es válida porque utiliza expresiones complejas (es decir,
ORDER BY {'a': b}.ano es válido).- Causas comunes: Intentar ordenar por expresiones complejas o rutas de campo impuras. Por ejemplo, la consulta
SELECT * FROM foo ORDER BY CAST(d AS DOCUMENT).a - Provoca este error porque
CAST(d AS DOCUMENT)es una expresión compleja.
- Causas comunes: Intentar ordenar por expresiones complejas o rutas de campo impuras. Por ejemplo, la consulta
- Pasos de resolución: Asegúrese de ordenar únicamente por la ruta de campo "pura". Una ruta de campo "pura" consta únicamente de
- identificadores, como
foo.d.aoa.
Error 4000
Descripción: El conjunto de resultados sin espacio de nombres no se puede devolver debido a conflictos de nombres de campo.
Causas comunes: Al configurar el
$sqlexcludeNamespacescampo de agregación comotruey consultar varias colecciones con los mismos nombres de campo, se produce este error. Dado que esta opción elimina los espacios de nombres de colección, los campos con el mismo nombre que pertenecen a diferentes colecciones dejan de ser únicos. Por ejemplo, considere las coleccionesfooy,barcada una con unacampo, y una consultaSELECT foo.*, bar.a FROM foo, barcomo. Con espacios de nombres de colección en el conjunto de resultados, los dosacampos se pueden diferenciar entrefoobary; sin embargo, sin espacios de nombres de colección, no se pueden distinguir entre sí.Pasos para la resolución: La mejor manera de corregir este error es usar alias para que los campos conflictivos sean únicos. Consulta de ejemplo
SELECT foo.*, bar.a AS a_unique_alias from foo, barcorregida:.