MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Objeto pai do caminho JSON ou consulta MongoDB equivalente


Pouco depois de adicionar minha própria recompensa, descobri a solução. Meu problema tem a mesma estrutura básica, que é um identificador pai e alguns pares de chave/valor filho N para classificações (qualidade, valor, etc ...).

Primeiro, você precisará de uma etapa de entrada JSON que obtenha a matriz SKU, Name e size_break_costs, tudo como Strings. A parte importante é que size_break_costs é uma String e é basicamente apenas uma matriz JSON com strings. Certifique-se de que, na guia Conteúdo da entrada JSON, "Ignore missing path" esteja marcado, caso você obtenha um com uma matriz vazia ou o campo esteja ausente por algum motivo.

Para seus campos, use:
Name           | Path               | Type
ProductSKU     | $.sku              | String
ProductName    | $.name             | String
SizeBreakCosts | $.size_break_costs | String

Adicionei um bloco "Filter rows" após esta etapa, com a condição "SizeBreakCosts IS NOT NULL", que é passada para um segundo bloco de entrada JSON. Neste segundo bloco JSON, você precisará verificar "A origem está definida em um campo?" e ​​definir o valor de "Obter origem do campo" como "SizeBreakCosts" ou o que você nomeou no primeiro bloco de entrada JSON.

Novamente, certifique-se de que "Ignorar caminho ausente" esteja marcado, bem como "Ignorar arquivo vazio". A partir deste bloco, queremos obter dois campos. Já teremos ProductSKU e ProductName com cada linha que for passada, e esta segunda etapa de entrada JSON a dividirá ainda mais em quantas linhas estiverem no JSON de entrada SizeBreakCosts. Para campos, use:
Name     | Path           | Type
Quantity | $.[*].quantity | Integer
Size     | $.[*].size     | String

Como você pode ver, esses caminhos usam "$.[*].FieldName", porque a string JSON que passamos tem uma matriz como o item raiz, então estamos obtendo todos os itens dessa matriz e analisando sua quantidade e Tamanho.

Agora, cada linha deve ter o SKU e o nome do objeto pai e a quantidade e o tamanho de cada objeto filho. Despejando este exemplo em um arquivo de texto, obtive:
ProductSKU;ProductName;Size;Quantity
SK3579;Authority;S; 80
SK3579;Authority;M; 14
SK3579;Authority;L; 55