Skip to content

聚合管道阶段 - $addFields

通过聚合管道阶段构建器 aggregation.NewStageBuilder 的方法 AddFields 构建 $addFields 阶段。

go
type User struct {
	mongox.Model `bson:"inline"`
	Name         string `bson:"name"`
	Age          int    `bson:"age"`
}

// mongo.Pipeline{bson.D{bson.E{Key:"$addFields", Value:bson.D{bson.E{Key:"isAdult", Value:bson.D{bson.E{Key:"$gte", Value:[]interface {}{"$age", 18}}}}, bson.E{Key:"birthYear", Value:bson.D{bson.E{Key:"$subtract", Value:[]interface {}{2024, "$age"}}}}}}}}
// [
//  {
//    "$addFields": {
//      "isAdult": {
//        "$gte": ["$age", 18]
//      },
//      "birthYear": {
//        "$subtract": [2024, "$age"]
//      }
//    }
//  }
//]
aggregation.NewStageBuilder().AddFields(
    aggregation.NewBuilder().
        // 如果年龄大于或等于 18,isAdult 为 true
        Gte("isAdult", "$age", 18).
        // 计算出生年份
        Subtract("birthYear", 2024, "$age").Build(),
).Build()