mongodb 用户点赞功能怎么设计比较合理?
怪我咯
怪我咯 2017-04-24 09:11:52
0
2
1042

假设用户为文章点赞,点赞操作是可以取消的。

用户和文章应该是多对多的关系,我看了一下 mongodb 官网上面的 一对多的实例,像它这样在 的一方添加 的 id,应该是比较适合那种建立了就不会轻易发生改变的关系。但像点赞这种经常发生改变的操作似乎就不太适用这种形式了。

后来我想了两个方案。
第一种是在 用户文档 中添加一个 like 的数组,每点赞一次就给把 文章id push 到 like 里面,每次删除就直接删除数组里面的 文章id 。

// User
{
  username: 'test',
  like: [123, 234, 345, 456, 567, 678, 789,890]  // 文章id
}

第二种就是用传统的 RDB 的方法,新建一个 Like 的 collection,里面存的是 用户id 和 文章id 。

// Like
{
  user_id: 111,
  post_id: 123
}

由于没有实践经验,所以特地来请教一下。顺便问下还有没有其他更好的方式?

怪我咯
怪我咯

走同样的路,发现不同的人生

모든 응답(2)
伊谢尔伦

여기서 게시물 컬렉션에 기사를 좋아한 사용자의 _id 배열을 저장하는 세 번째 솔루션이 제안되었습니다. 예를 들면 다음과 같습니다.

으아아아

기사에 좋아요를 누른 사용자 확인:

으아아아

기사에 대한 좋아요 수 확인:

으아아아

좋아요 100개를 받은 기사 확인:

으아아아

사용자가 좋아하는 기사 확인:

으아아아

사용자가 게시물을 좋아했습니다:

으아아아

사용자가 게시물을 싫어함:

으아아아

PS: 위 코드는 테스트되지 않았습니다. 테스트하려면 설명서를 참조하세요.

伊谢尔伦

각 기사의 좋아요 수도 계산해야 하기 때문에 후자의 옵션을 권장합니다.

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿