La requête et la somme de tous avec la mangouste
Je veux récupérer tous les utilisateurs user_totaldocs
et user_totalthings
et souhaitez somme ces variables.
Comment c'est possible? Voici l'utilisateur de schéma:
var user_schema = mongoose.Schema({
local : {
...
...
user_id : String,
user_totaldocs : Number,
user_totalthings : Number
....
}
});
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser le L'Agrégation De Pipeline pour ajouter des champs calculés à un résultat. Il y a quelques exemples ci-dessous à l'aide de la
mongo
shell, mais la syntaxe dans la Mangouste est Aggregate() helper est similaire.Par exemple, pour calculer la somme (par utilisateur document), vous pouvez utiliser le
$ajouter
expression dans un$projet
phase:Pour calculer les totaux dans plusieurs documents, vous devez utiliser un
$group
phase avec un$somme
accumulateur, par exemple:Vous souhaitez peut-être le seul
total
champ; j'ai ajouté danstotaldocs
ettotalthings
comme exemples de calcul de plusieurs champs.Un groupe
_id
denull
permettra de combiner les valeurs de tous les documents transmis à la$group
scène, mais vous pouvez également utiliser d'autres critères (tels que le groupement paruser_id
).Vous pouvez utiliser l'agrégation cadre fourni par mongodb. Pour votre cas,
si vous souhaitez récupérer la somme de user_totaldocs et la somme de user_totalthings à travers la collection (du sens pour tous les utilisateurs), ne --
À la somme user_totaldocs et user_totalthings pour un utilisateur en particulier dans une collection(en supposant il existe plusieurs document pour l'utilisateur), ce sera le retour de la somme pour chaque utilisateur, NE --
Pas nécessaire de fournir des code d'utilisateur.
Pour plus d'info lire:
1. http://docs.mongodb.org/manual/reference/operator/aggregation/group/#pipe._S_group
2. http://docs.mongodb.org/manual/core/aggregation/