mongoose 可以自动执行查询么?

发布于 2022-09-12 03:39:54 字数 361 浏览 13 评论 0

假设Mongodb中有User、Group两个类型的数据,大致如下:

User {
    name: String,
    age: number,
    groups: [],  // 通过ref关联Group
}

Group {
    name: string,
    userCount: number,
}

GroupuserCount属性表示属于这个Group的用户数量,这个值是需要动态查询出来的,有什么简单的方法处理这种情况么?

我现在是每次查询group的时候再手动查询一下user数量,然后赋值给group.userCount,感觉不是很优雅。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

眼睛会笑 2022-09-19 03:39:54

为什么不直接写进去?在增加用户或者减少用户的时候改。

少女七分熟 2022-09-19 03:39:54

可以使用 populate 帮你在查用户的时候顺便把 groups 的字段具体数据填充完整。

只是在用心讲痛 2022-09-19 03:39:54
UserMODEL.aggregate([{
    $project:{
        namae:1,
        age:1,
        group:1,
        userCount:{ 
            $cond: { 
                if: { $isArray: "$group" }, 
                then: { $size: "$group" }, 
                else: 0
            } 
        }
    }
  }])

userCount 即为总数

变身佩奇 2022-09-19 03:39:54

可以添加一个UserGroupMapping表管理User和Group的关系,
于是就可以简单的在这个表查询某个Group的用户数量

UserGroupMapping.aggregate([
    // $lookup & $unwind group
    // $match group.name
    // $count
])

有时候按照关系型数据库设计还是有很多好处的。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文