Existe-t-il un moyen de supprimer un champ lors d'une agrégation? J'ai un résultat qui ressemble à ceci:
{
"firstName":"Patient1",
"lastName":"last",
"addresses":[
{
"street1":"1011 Happy Lane",
"street2":"Apt 1",
},
],
"phone":"11111111"
}
J'essaye d'exclure les «adresses» du résultat:
{
"firstName":"Patient1",
"lastName":"last",
"phone":"11111111"
}
J'ai trouvé $ non défini mais ne semble fonctionner que sur la mise à jour.
De plus, je ne veux pas «grouper» manuellement les autres éléments car je dois tout renvoyer à l'exception des attributs que je souhaite exclure. L'ajout sélectif semble très facile dans l'agrégation, mais la suppression sélective semble un peu plus compliquée. Appréciez toutes les idées ici.
Utilisez une $project
étape de votre pipeline. Deux options s'offrent à vous lorsque vous utilisez une projection.
La première est que vous pouvez ajouter à la liste blanche les champs renvoyés en spécifiant les champs que vous souhaitez inclure avec une valeur de 1
. La scène de projection ressemblerait à ceci:
{ $project: {
firstName: 1,
lastName: 1,
phone: 1
}}
La seconde est que vous pouvez mettre sur liste noire les champs renvoyés en spécifiant les champs que vous ne souhaitez pas inclure avec une valeur de 0
. La scène de projection ressemblerait à ceci:
{ $project: {
addresses: 0
}}
Les deux approches ont leurs avantages et celle que vous devriez utiliser dépend en grande partie de votre cas d'utilisation. Une bonne règle de base est que si vous ne voulez que certains champs et que vous ne voulez pas modifier votre étape de projection lorsque de nouveaux champs sont ajoutés, vous devez utiliser une approche de liste blanche, mais si vous souhaitez uniquement exclure certains champs tout en autorisant nouveaux champs à inclure dans les résultats, vous devez utiliser une approche de liste noire.
Cet article est collecté sur Internet, veuillez indiquer la source lors de la réimpression.
En cas d'infraction, veuillez [email protected] Supprimer.
laisse moi dire quelques mots