Golang中的Mongo中值运算

问题描述 投票:0回答:1

我在 mongo (go) 中有集合,其类型是:

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"`
}

我需要评估某个用户(按他的

receivedAt
)的最后 5 条记录(按
user_id
时间字段)的评分中值。 我已经得到了这个:

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})

但是我不知道如何获得这 5 行的评分中位数。我不确定我这样做的正确方法。帮忙,谢谢

mongodb go aggregate
1个回答
0
投票

$limit
阶段之后,一种选择是使用
$group
累加器
 
$median

groupgStage := bson.D{{"$group", bson.D{
  {"_id", 0}, 
  {"median", bson.D{{"$median", 
    bson.D{{"$input", "$rating"}}, 
    bson.D{{"method", "approximate"}}
  }}}
}}}
© www.soinside.com 2019 - 2024. All rights reserved.