sql >> Databáze >  >> NoSQL >> MongoDB

Nadřazený objekt cesty JSON nebo ekvivalentní dotaz MongoDB

Krátce poté, co jsem přidal svou vlastní odměnu, jsem přišel na řešení. Můj problém má stejnou základní strukturu, což je rodičovský identifikátor a několik N podřízených párů klíč/hodnota pro hodnocení (kvalita, hodnota atd...).

Nejprve budete potřebovat vstupní krok JSON, který získá pole SKU, Name a size_break_costs, vše jako řetězce. Důležitou součástí je, že size_break_costs je řetězec a je to v podstatě pouze stringified pole JSON. Ujistěte se, že na kartě Obsah vstupu JSON je zaškrtnuto „Ignorovat chybějící cestu“ pro případ, že byste získali pole s prázdným polem nebo pole z nějakého důvodu chybělo.

Pro svá pole použijte:

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

Po tomto kroku jsem přidal blok "Filter rows" s podmínkou "SizeBreakCosts IS NOT NULL", který je poté předán do druhého vstupního bloku JSON. V tomto druhém bloku JSON budete muset zkontrolovat „Zdroj je definován v poli?“ a nastavit hodnotu „Získat zdroj z pole“ na „SizeBreakCosts“ nebo jak jste to pojmenovali v prvním vstupním bloku JSON.

Znovu se ujistěte, že je zaškrtnuto "Ignorovat chybějící cestu" a také "Ignorovat prázdný soubor". Z tohoto bloku budeme chtít získat dvě pole. S každým předaným řádkem již budeme mít ProductSKU a ProductName a tento druhý krok vstupu JSON je dále rozdělí na mnoho řádků, které budou ve vstupním JSON SizeBreakCosts. Pro pole použijte:

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

Jak vidíte, tyto cesty používají "$.[*].FieldName", protože řetězec JSON, který jsme předali, má jako kořenovou položku pole, takže získáváme každou položku v tomto poli a analyzujeme její množství a velikost.

Nyní by měl mít každý řádek SKU a název z nadřazeného objektu a množství a velikost z každého podřízeného objektu. Po uložení tohoto příkladu do textového souboru jsem dostal:

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



  1. Určení sdílené kolekce pomocí Spring Data MongoDB

  2. Jak seřadit dvě pole s mangustou?

  3. Jak se připojit ke dvěma dalším kolekcím s podmínkami

  4. Nelze spustit Redis server kvůli chybě konfiguračního souboru