mongodb在做文章收藏时,对于文章的表和用户表是否要添加一个中间表?怎样设计才最合理呢?

mongodb在做文章收藏时,对于文章的表和用户表是否要添加一个中间表?怎样设计才最合理呢?
如果不用中间表时,文章有很多的收藏者,在查询时是否会影响查询速度?

阅读 4.2k
1 个回答

举个栗子

// 文章表article
{
    _id: ObjectId("5a9fff8b9c15e1a37b54d615"),
    title: "2018年放假通知",
    date: ISODate(...),
}
// 用户表users
{
    name: '张三',
    likes: [
        {articleId: ObjectId("5a9fff8b9c15e1a37b54d615"), title: "2018年放假通知"},
        {articleId: ..., title: ...}
    ]
}
{
    name: '李四',
    likes: [
        {articleId: ObjectId("5a9fff8b9c15e1a37b54d615"), title: "2018年放假通知"},
        {articleId: ..., title: ...}
    ]
}

当你需要查询一个用户收藏了哪些文章的时候,显然查找用户就可以了,速度不会慢;
当你需要查询一篇文章都有谁收藏的时候:

db.users.find({"likes.articleId": ObjectId("5a9fff8b9c15e1a37b54d615")})

只要在likes.articleId上有索引,也是直接命中索引的查询,不会有性能问题。
不知道是不是你想问的问题。

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