sql >> Base de Datos >  >> NoSQL >> MongoDB

Objeto principal de ruta JSON o consulta MongoDB equivalente

Poco después de agregar mi propia recompensa, descubrí la solución. Mi problema tiene la misma estructura básica, que es un identificador principal y algunos pares clave/valor secundarios N para las calificaciones (calidad, valor, etc...).

Primero, necesitará un paso de entrada JSON que obtenga el SKU, el nombre y la matriz size_break_costs, todo como cadenas. La parte importante es que size_break_costs es una cadena, y es básicamente solo una matriz JSON en forma de cadena. Asegúrese de que, en la pestaña Contenido de la entrada JSON, esté marcada la opción "Ignorar ruta faltante", en caso de que obtenga una con una matriz vacía o el campo falte por algún motivo.

Para sus campos, utilice:

Name           | Path               | Type
ProductSKU     | $.sku              | String
ProductName    | $.name             | String
SizeBreakCosts | $.size_break_costs | String

Agregué un bloque de "filas de filtro" después de este paso, con la condición "SizeBreakCosts IS NOT NULL", que luego se pasa a un segundo bloque de entrada JSON. Este segundo bloque JSON, deberá verificar "¿La fuente está definida en un campo?", Y establecer el valor de "Obtener fuente del campo" en "SizeBreakCosts", o como lo haya llamado en el primer bloque de entrada JSON.

Nuevamente, asegúrese de marcar "Ignorar ruta faltante", así como "Ignorar archivo vacío". De este bloque, querremos obtener dos campos. Ya tendremos ProductSKU y ProductName con cada fila que se pasa, y este segundo paso de entrada JSON lo dividirá aún más en cuantas filas haya en el JSON de entrada de SizeBreakCosts. Para los campos, utilice:

Name     | Path           | Type
Quantity | $.[*].quantity | Integer
Size     | $.[*].size     | String

Como puede ver, estas rutas usan "$.[*].FieldName", porque la cadena JSON que pasamos tiene una matriz como elemento raíz, por lo que obtenemos todos los elementos de esa matriz y analizamos su cantidad y tamaño.

Ahora cada fila debe tener el SKU y el nombre del objeto principal, y la cantidad y el tamaño de cada objeto secundario. Volcando este ejemplo en un archivo de texto, obtuve:

ProductSKU;ProductName;Size;Quantity
SK3579;Authority;S; 80
SK3579;Authority;M; 14
SK3579;Authority;L; 55