Mongo moyenne de l'agrégation de requête avec aucun groupe
J'essaie d'obtenir la moyenne de la totalité d'un champ à l'aide de l'agrégation cadre de Mongo. Cependant, je n'arrive pas à trouver un exemple qui utilise un paramètre de groupe.
J'ai le document suivant de la structure:
{
"_id" : ObjectId("5352703b61d2739b2ea44e4d"),
"Semana" : "2014-02-23 - 2014-03-01",
"bolsaDeValores" : "7",
"bvc" : "8",
"dollar" : "76",
"ecopetrol" : "51",
"dollarPrice" : "18"
}
Fondamentalement, ce que je veux faire est d'obtenir la valeur moyenne de la bvc champ, et tout autre numérique, pour l'ensemble de la collection, le plus rapidement possible (sans l'aide de MapReduce que c'est moins efficace que l'Agrégation de Cadre).
J'ai essayé de groupe sur un plus grand que zéro à la base, mais en vain:
db.EvaluatedSentiments.aggregate([
{ "$group": {
"bvc" : {"$gt:0"}
},
{
"bvc" : { "$avg" : "$bvc"}
}
}
])
J'apprécie toute aide que vous pourriez apporter.
Références: Mongo agrégation manuelle
Groupe par la valeur null à la place
Vous fait réaliser qu'aucune des valeurs que vous présentez réellement numérique, n'est-ce pas? Ils sont en fait toutes les chaînes.
C'est très vrai, je n'avais pas réalisé à ce sujet, une omission j'ai fait tout en stockant les vallées. Merci
Vous fait réaliser qu'aucune des valeurs que vous présentez réellement numérique, n'est-ce pas? Ils sont en fait toutes les chaînes.
C'est très vrai, je n'avais pas réalisé à ce sujet, une omission j'ai fait tout en stockant les vallées. Merci
OriginalL'auteur NicolasZ | 2014-04-27
Vous devez vous connecter pour publier un commentaire.
Tout d'abord stocker des valeurs numériques sous forme de nombres. Ensuite, vous pouvez utiliser une simple déclaration pour calculer la moyenne:
Vous pouvez simplement utiliser plus
$avg
opérateurs d'agrégation pour obtenir des moyennes pour vos autres champs numériques:presque raté le "_id": null. cela permettra de groupe tout en un! génie !
OriginalL'auteur Sebastian
Donc, si vos données était en réalité numérique qui est-il pas et que votre intention est d'exclure les documents qui ont un "plus grand que zéro" de la valeur, alors vous inclure un
$match
déclaration dans votre agrégation pipeline afin de "filtrer" ces documents:Je veux 0 valeur à afficher dans la liste mais en avg j'ai besoin d'exclure zéro.. Dans cette situation, le ci-dessus ne fonctionne pas.. il est tout possiiblities pour l'obtenir
OriginalL'auteur Neil Lunn