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

JSON-sti overordnet objekt eller tilsvarende MongoDB-forespørgsel

Kort efter jeg tilføjede min egen dusør, fandt jeg ud af løsningen. Mit problem har den samme grundlæggende struktur, som er en overordnet identifikator, og nogle nummer N underordnede nøgle/værdi-par til vurderinger (kvalitet, værdi osv...).

Først skal du bruge et JSON-input-trin, der får SKU, Name og size_break_costs-arrayet, alt sammen som strenge. Den vigtige del er, at size_break_costs er en streng og dybest set kun er en strenget JSON-array. Sørg for, at under fanen Indhold i JSON-inputtet, at "Ignorer manglende sti" er markeret, hvis du får en med et tomt array, eller feltet mangler af en eller anden grund.

Til dine felter skal du bruge:

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

Jeg tilføjede en "Filter rækker"-blok efter dette trin, med betingelsen "SizeBreakCosts IS NOT NULL", som derefter sendes til en anden JSON-inputblok. Denne anden JSON-blok skal du tjekke "Kilden er defineret i et felt?", og indstille værdien af ​​"Hent kilde fra felt" til "SizeBreakCosts", eller hvad du nu kaldte den i den første JSON-inputblok.

Igen skal du sørge for, at "Ignorer manglende sti" er markeret, samt "Ignorer tom fil". Fra denne blok vil vi gerne have to felter. Vi har allerede ProductSKU og ProductName med hver række, der er sendt ind, og dette andet JSON-inputtrin vil yderligere opdele det i, hvor mange rækker der er i SizeBreakCosts-input JSON. For felter, brug:

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

Som du kan se, bruger disse stier "$.[*].FieldName", fordi den JSON-streng, vi sendte i, har et array som rodelementet, så vi henter hvert element i det array og analyserer dets mængde og størrelse.

Nu skal hver række have SKU'en og navnet fra det overordnede objekt og mængden og størrelsen fra hvert underordnede objekt. Når jeg dumpede dette eksempel til en tekstfil, fik jeg:

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



  1. Asynkron programmeringsparadigme med nodejs og redis-node

  2. Sådan sletter du et dybt indlejret objekt i mongodb

  3. Indsæt standardværdier virker ikke mongodb

  4. Fejl ved indsættelse af et dokument i MongoDB via Node.js