Golang gin 框架使用 MongoDB 进行多表联查,以及分组查询
主要针对gin框架中如何使用
假设两张表
order表
{
"_id": ObjectId("65aa2b2203abce203bbe3c7a"),
"name": "骆驼祥子",
"route": "/test/v2/desktop",
"bookshelf": "03"
}
orderRemark表
{
"_id": ObjectId("65aa2b2203abce203bbe3c7d"),
"orderId": "65aa2b2203abce203bbe3c7a",
"remark": "文学"
}
如何进行多表联查
我们可以使用 mongoDB 的 $lookup关键字:
{"$lookup", bson.D{
{"from", "orderRemark"}, // 关联的集合名
{"localField", "_id"}, // 本地集合(order)的字段
{"foreignField", "orderId"}, // 外部集合(orderRemark)的字段
{"as", "remarks"}, // 保存结果的字段名
}}
如何分组查询数量
假设我们要根据 bookshelf字段分组查询数量,那我们可以使用 mongoDB 的 $group 关键字:
{"$group", bson.D{
{"_id", "$programId"},
{"count", bson.D{{"$sum", 1}}}, // $sum 获取数量,字段定义为 count
{"remark", bson.D{{"$addToSet", "$remarks.reason"}}}, // 提取 remarks 中的 reason 字段
}}
END

浙公网安备 33010602011771号