MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Oggetto padre del percorso JSON o query MongoDB equivalente

Poco dopo aver aggiunto la mia taglia, ho trovato la soluzione. Il mio problema ha la stessa struttura di base, che è un identificatore genitore, e alcune coppie chiave/valore figlio N per le valutazioni (qualità, valore, ecc...).

Innanzitutto, avrai bisogno di un passaggio di input JSON che ottenga l'array SKU, Name e size_break_costs, tutti come stringhe. La parte importante è che size_break_costs è una stringa ed è fondamentalmente solo un array JSON stringato. Assicurati che nella scheda Contenuto dell'input JSON, sia selezionato "Ignora percorso mancante", nel caso in cui ne ottieni uno con un array vuoto o il campo manca per qualche motivo.

Per i tuoi campi, usa:

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

Ho aggiunto un blocco "Filtra righe" dopo questo passaggio, con la condizione "SizeBreakCosts NON È NULL", che viene quindi passato a un secondo blocco di input JSON. Questo secondo blocco JSON, dovrai selezionare "L'origine è definita in un campo?" e ​​impostare il valore di "Ottieni sorgente dal campo" su "SizeBreakCosts", o come lo hai chiamato nel primo blocco di input JSON.

Ancora una volta, assicurati che "Ignora percorso mancante" sia selezionato, così come "Ignora file vuoto". Da questo blocco, vorremo ottenere due campi. Avremo già ProductSKU e ProductName con ogni riga passata e questo secondo passaggio di input JSON lo suddividerà ulteriormente in quante righe si trovano nel JSON di input SizeBreakCosts. Per i campi, utilizzare:

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

Come puoi vedere, questi percorsi usano "$.[*].FieldName", perché la stringa JSON che abbiamo passato ha un array come elemento radice, quindi stiamo ottenendo ogni elemento in quell'array e ne analizziamo la quantità e taglia.

Ora ogni riga dovrebbe avere lo SKU e il nome dell'oggetto padre e la quantità e la dimensione di ogni oggetto figlio. Scaricando questo esempio in un file di testo, ho ottenuto:

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