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

posted @ 2024-05-08 10:39  阿呆小跟班  阅读(176)  评论(0)    收藏  举报