Maison > Article > développement back-end > Opération médiane de Mongo à Golang
L'opération médiane de Mongo à Golang est une technologie importante qui revêt une grande importance pour les développeurs. Cela nous permet d'être plus flexibles et efficaces dans le traitement des bases de données Mongo. Dans Golang, nous pouvons utiliser les opérations médianes Mongo pour implémenter diverses opérations de données, telles que l'insertion, la mise à jour et la suppression. Cette méthode informatique nous permet de mieux utiliser les puissantes fonctions de Mongo et d'améliorer notre efficacité de développement. Cet article présentera l'utilisation et les précautions du fonctionnement médian de Mongo dans Golang à travers des cas pratiques pour aider les développeurs à mieux maîtriser cette technologie.
J'ai une collection en mongo (go) dont le type est :
type CreateFeedbackRequest struct { UserID string `json:"user_id" validate:"required"` WaybillID uint64 `json:"waybill_id" validate:"required"` Rating int `json:"rating" validate:"required"` Comment string `json:"comment"` ReceivedAt time.Time `json:"received_at" validate:"required"` }
J'ai besoin d'évaluer la note médiane d'un certain utilisateur (via son user_id
)的最后 5 条记录(通过 receivedAt
champ horaire).
J'ai ça :
matchStage := bson.D{{"$match", bson.D{{"_id", userID}}}} sortStage := bson.D{{"$sort", bson.D{{"created_at", 1}}}} limitStage := bson.D{{"$limit", tripsCount}} cursor, err := r.c.Aggregate(ctx, mongo.Pipeline{matchStage, sortStage, limitStage})
Mais je ne sais pas comment obtenir la note médiane de ces 5 lignes. Je ne suis pas sûr de la bonne façon de procéder. Au secours, merci
Dans $limit
阶段之后,自 mongodb 版本 7.0 以来的一个选项是 $group
与 $median
Accumulateur
groupgStage := bson.D{{"$group", bson.D{ {"_id", 0}, {"median", bson.D{{"$median", bson.D{{"$input", "$rating"}, {"method", "approximate"}} }}} }}}
Pour les anciennes versions, vous pouvez
$sort
通过 rating
$group
和 $push
所有 rating
à un tableau (tous les 5 après la limite) $project
L'élément au milieu du tableau Cela ressemble à ceci :
sortRatingStage := bson.D{{"$sort", bson.D{{"rating", 1}}}} groupStage := bson.D{{"$group", bson.D{{"_id", 0}, {"ratings", bson.D{{"$push", "ratings"}}}}}} projectStage := bson.D{{"$project", bson.D{ {"_id", 0}, {median, bson.D{{"$arrayElemAt", bson.D{ {"$ratings", bson.D{{"$floor", bson.D{ {"$divide", bson.A{{bson.D{{"$size", "$ratings"}}, 2}}} }}}} }}}} }}}}
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!