mongoDB中多对多的关系

现在有这样的一个情形: 一个用户可以关注多个用户,一个用户也可以被多个用户关注。这是多对多的关系吗?
如果是的话,按照nosql的特性,应该有两个表,一个就是User表,另一个就是Follow表。其中User表存放一个关注当前用户的用户的id列表followers,描述当前用户被哪些用户关注;Follow表存放某个user的关注列表,描述当前用户关注了哪些用户。
请问这样设计是否符合规范。
PS:查询用户关注用户的频率算中等,不是很高。

阅读 6.2k
2 个回答

在你非要用nosql联表查询的情况下,确实就可以这样设计,用聚合查询就可以。

Model.aggregate([
    {
      $lookup: {
        from: "users",
        localField: "userId",
        foreignField: "_id",
        as: "userInfo",
      },
    },
    { $sort: { timeStamp: -1 } },
    { $skip: parseInt(page - 1) * parseInt(pageNumber) },
    { $limit: parseInt(pageNumber) },

  ])

但是,这个查询的速度相对于sql的多表查询就慢很多。nosql不适用于复杂的数据库关联设计

感觉不用这么复杂啊,mongo就是文档型的数据库呀

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进