Rumah >pembangunan bahagian belakang >Golang >Operasi median Mongo di Golang
Operasi median Mongo di Golang ialah teknologi penting yang mempunyai kepentingan yang besar untuk pembangun. Ia membolehkan kami menjadi lebih fleksibel dan cekap apabila berurusan dengan pangkalan data Mongo. Di Golang, kami boleh menggunakan operasi median Mongo untuk melaksanakan pelbagai operasi data, seperti sisipan, kemas kini dan pemadaman. Kaedah pengkomputeran ini membolehkan kami menggunakan fungsi berkuasa Mongo dengan lebih baik dan meningkatkan kecekapan pembangunan kami. Artikel ini akan memperkenalkan penggunaan dan langkah berjaga-jaga bagi operasi median Mongo di Golang melalui kes praktikal untuk membantu pembangun menguasai teknologi ini dengan lebih baik.
Saya ada koleksi di mongo (go) yang jenisnya:
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"` }
Saya perlu menilai rating median pengguna tertentu (melalui user_id
)的最后 5 条记录(通过 receivedAt
medan masanya).
Saya ada ini:
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})
Tetapi saya tidak tahu bagaimana untuk mendapatkan rating median bagi 5 baris ini. Saya tidak pasti cara yang betul untuk saya melakukan ini. Bantuan, terima kasih
Dalam $limit
阶段之后,自 mongodb 版本 7.0 以来的一个选项是 $group
与 $median
Accumulator
groupgStage := bson.D{{"$group", bson.D{ {"_id", 0}, {"median", bson.D{{"$median", bson.D{{"$input", "$rating"}, {"method", "approximate"}} }}} }}}
Untuk versi lama boleh
$sort
通过 rating
$group
和 $push
所有 rating
kepada tatasusunan (semua 5 selepas had) $project
Item di tengah array Ia kelihatan seperti ini:
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}}} }}}} }}}} }}}}
Atas ialah kandungan terperinci Operasi median Mongo di Golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!