鍍金池/ 問答/數(shù)據(jù)庫  HTML/ mongodb在做文章收藏時,對于文章的表和用戶表是否要添加一個中間表?怎樣設(shè)計

mongodb在做文章收藏時,對于文章的表和用戶表是否要添加一個中間表?怎樣設(shè)計才最合理呢?

mongodb在做文章收藏時,對于文章的表和用戶表是否要添加一個中間表?怎樣設(shè)計才最合理呢?
如果不用中間表時,文章有很多的收藏者,在查詢時是否會影響查詢速度?

回答
編輯回答
獨特范

舉個栗子

// 文章表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: ...}
    ]
}

當(dāng)你需要查詢一個用戶收藏了哪些文章的時候,顯然查找用戶就可以了,速度不會慢;
當(dāng)你需要查詢一篇文章都有誰收藏的時候:

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

只要在likes.articleId上有索引,也是直接命中索引的查詢,不會有性能問題。
不知道是不是你想問的問題。

2018年2月23日 09:37