MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Objet parent de chemin JSON ou requête MongoDB équivalente

Peu de temps après avoir ajouté ma propre prime, j'ai trouvé la solution. Mon problème a la même structure de base, qui est un identifiant parent, et un certain nombre N paires clé/valeur enfant pour les évaluations (qualité, valeur, etc.).

Tout d'abord, vous aurez besoin d'une étape d'entrée JSON qui obtient le tableau SKU, Name et size_break_costs, le tout sous forme de chaînes. La partie importante est que size_break_costs est une chaîne, et est essentiellement juste un tableau JSON stringifié. Assurez-vous que sous l'onglet Contenu de l'entrée JSON, l'option "Ignorer le chemin manquant" est cochée, au cas où vous en obtiendriez un avec un tableau vide ou si le champ est manquant pour une raison quelconque.

Pour vos champs, utilisez :

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

J'ai ajouté un bloc "Filtrer les lignes" après cette étape, avec la condition "SizeBreakCosts IS NOT NULL", qui est ensuite transmise à un deuxième bloc d'entrée JSON. Ce deuxième bloc JSON, vous devrez vérifier "La source est définie dans un champ ?", Et définir la valeur de "Obtenir la source du champ" sur "SizeBreakCosts", ou tout ce que vous l'avez nommé dans le premier bloc d'entrée JSON.

Encore une fois, assurez-vous que "Ignorer le chemin manquant" est coché, ainsi que "Ignorer le fichier vide". À partir de ce bloc, nous voudrons obtenir deux champs. Nous aurons déjà ProductSKU et ProductName avec chaque ligne transmise, et cette deuxième étape d'entrée JSON la divisera davantage en autant de lignes que possible dans l'entrée JSON SizeBreakCosts. Pour les champs, utilisez :

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

Comme vous pouvez le voir, ces chemins utilisent "$.[*].FieldName", car la chaîne JSON que nous avons transmise a un tableau comme élément racine, nous obtenons donc chaque élément de ce tableau et analysons sa quantité et taille.

Maintenant, chaque ligne doit avoir le SKU et le nom de l'objet parent, ainsi que la quantité et la taille de chaque objet enfant. En vidant cet exemple dans un fichier texte, j'ai :

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