2014-10-30 2 views
0

MongoDB로 시작했습니다. 나는 사용자, 요리사, 레스토랑 및 평점이라는 콜렉션을 가지고 있습니다. 등급을 특정 요리 및 사용자에게 매핑해야합니다. 적어도 10 등급, 또는 그 요리 10 등급 을받은 MongoDB의 관계형 쿼리

  • 와 레스토랑 요리의

    • 목록 :

      Users 
      { 
      _id: "12323421", 
      name: "John Doe", 
      ... 
      } 
      
      Dishes 
      { 
      _id: "9872983749", 
      name: "Apple Pie", 
      restaurantID: "3432452" //Corresponds to Patisserie 
      ... 
      } 
      
      Restaurants 
      { 
      _id: "3432452", 
      name: "Patisserie", 
      ... 
      } 
      
      Ratings 
      { 
      _id: "74766575", 
      userID: "12323421", //Corresponds to John Doe 
      dishID: "9872983749", //Corresponds to Apple Pie 
      rating: 5 
      } 
      

      내가 좋아하는 몇 가지 쿼리를 생성 대해 이동하는 방법을 잘 모릅니다

      이것은 SQL 환경에서 구현하는 것이 매우 간단하지만 MongoDB에서 조인 또는 중첩 쿼리를 사용하는 방법은 무엇입니까?

  • 답변

    2

    MongoDB는 조인이나 서브 쿼리를 기본적으로 지원하지 않습니다.

    MongoDB 스키마 디자인에 대해 한 걸음 뒤로 물어볼 것을 제안합니다. MongoDB 문서의 Data Modeling Concepts 섹션은 시작할 수있는 좋은 곳입니다. 이 주제에 대한 많은 다른 리소스가 있습니다. The O'Reilly book MongoDB 응용 디자인 패턴 또한 훌륭한 자료입니다.

    RDBMS에서 모델링하는 것과 비슷한 방식으로 MongoDB에서 데이터 모델링 경로를 찾으려면 실패에 대비해야합니다.

    특정 문제를 모델링하는 데 항상 "올바른"방법이나 "최상의"방법이있는 것은 아닙니다. 이는 항상 애플리케이션의 특정 액세스 패턴 및 요구 사항에 따라 달라집니다.

    의견에서 언급했듯이 한 가지 방법은 특정 요리에 대한 등급을 접시 컬렉션에 포함시키는 것입니다. 그러나 많은 등급 (무제한 성장이 나쁘다)이 많은 경우 문제가됩니다. 일반적인 접근법은 종종 하이브리드입니다. 예를 들어 특정 요리에 대해 가장 인기 있거나 가장 최근에 등급을 매기고 다른 등급을 별도의 컬렉션에 저장할 수 있습니다. 다시 말하지만, 응용 프로그램이 데이터를 어떻게 표시하고 그에 따라 데이터를 모델링하려고하는지 생각해보십시오.

    +0

    답변 해 주셔서 감사합니다. 나는 MongoDB로 모델링하는 것이 RDBMS를 배우는 동안 우리에게 주입 된 개념에 위배된다는 것을 이해한다. 그리고 이것은 해방 될뿐만 아니라 꽤 방향이 틀린 것으로 판명되었다. – ZeMoon

    +0

    위의 '스키마'의 경우 요리 컬렉션 자체에 등급을 쉽게 포함시킬 수는 있지만 많은 등급이있을 때 문제가됩니다. – ZeMoon

    +0

    좋습니다. 따라서 모델을 만드는 동안 접근법은 하향식 (가능한 가장 정규화 된 방식으로 데이터 표현) 대신 하향식 (응용 프로그램이 데이터를 사용하는 방법)입니다. – ZeMoon