찾다

 >  Q&A  >  본문

mongodb 사용자와 같은 기능을 보다 합리적으로 디자인하는 방법은 무엇입니까?

사용자가 기사를 좋아한다고 가정하면 좋아요 작업이 취소될 수 있습니다.

사용자와 기사는 다대다 관계를 가져야 합니다. mongodb 공식 홈페이지에서 일대다 예시를 봤는데, 옆에 one을 추가해 주세요. 많은 ID는 한번 맺어진 후에도 쉽게 변하지 않는 관계에 더 적합해야 합니다. 하지만 좋아요처럼 자주 바뀌는 조작은 이런 형태에는 적합하지 않은 것 같습니다.

나중에 저는 두 가지 옵션을 생각했습니다.
첫 번째는 사용자 문서에 like 배열을 추가하고, 좋아요를 누를 때마다 기사 ID를 like에 푸시하고, 삭제될 때마다 배열에 있는 기사 ID를 직접 삭제하는 것입니다.

으아악

두 번째 방법은 전통적인 RDB 방식을 사용하여 사용자 ID와 기사 ID를 저장하는 Like의 새 컬렉션을 만드는 것입니다.

으아악

실무 경험이 없어서 조언을 구하러 왔습니다. 그런데 다른 더 좋은 방법이 있나요?

怪我咯怪我咯2796일 전1066

모든 응답(2)나는 대답할 것이다

  • 伊谢尔伦

    伊谢尔伦2017-04-24 09:13:52

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

    으아아아

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

    으아아아

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

    으아아아

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

    으아아아

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

    으아아아

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

    으아아아

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

    으아아아

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

    회신하다
    0
  • 伊谢尔伦

    伊谢尔伦2017-04-24 09:13:52

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

    회신하다
    0
  • 취소회신하다