복붙노트

[MONGODB] MongoDB를하고 "조인"[중복]

MONGODB

MongoDB를하고 "조인"[중복]

나는 MongoDB를 공식적으로 "조인"지원하지 않습니다 확신 해요. 이것은 무엇을 의미 하는가?

"우리는이 명 컬렉션을 함께 (테이블). 연결할 수 없습니다"이 의미 하는가?

나는 우리가 수집 B의 other_id에 수집 (A)에 _id의 값을 넣을 경우, 우리는 단순히 두 컬렉션을 연결할 수있을 것 같아요?

나의 이해가 맞다면 우리가 쿼리를 실행할 때, MongoDB의이 말, 두 개의 테이블을 연결할 수 있습니다. 이것은 http://www.mongodb.org/display/DOCS/Schema+Design 작성 "참조"에 의해 이루어집니다.

그리고 정말 무엇을 의미 "조인"는 무엇입니까?

나는 이것이 MongoDB의 스키마 디자인을 배울 필수적이기 때문에 답을 알고 싶어요. http://www.mongodb.org/display/DOCS/Schema+Design

해결법

  1. ==============================

    1.필요한 경우 관계 만 평가됩니다 이후에는 가입하지입니다. A는 (당신이 "하나에 두 개의 테이블을 조인") 관계를 해결하고 그들이 하나의 테이블 인 것처럼 그들을 돌아갑니다 반면에 (SQL 데이터베이스에) 참여.

    필요한 경우 관계 만 평가됩니다 이후에는 가입하지입니다. A는 (당신이 "하나에 두 개의 테이블을 조인") 관계를 해결하고 그들이 하나의 테이블 인 것처럼 그들을 돌아갑니다 반면에 (SQL 데이터베이스에) 참여.

    여기 DBRef에 대한 자세한 내용을보실 수 있습니다 : http://docs.mongodb.org/manual/applications/database-references/

    참조를 해결하기위한 두 가지 해결책이 있습니다. 하나는 거의 설명대로 수동으로하는 것입니다. 다른 문서에서 문서의 _id가 other_id 그냥 저장, 다음의 관계를 해결하기 위해 자신의 함수를 작성합니다. 다른 솔루션은 MongoDB를의 결의 수요에 관계 클라이언트 측 만들 것입니다 위의 매뉴얼 페이지에 설명 된대로 DBREFS을 사용하는 것입니다. 어떤 솔루션이 두 가지 방법은 관계 클라이언트 측 (SQL 데이터베이스의 결의가 서버 측에 조인주의를) 해결할 문제가되지 않습니다 너무 많이하기 때문에 선택합니다.

  2. ==============================

    2.몽고 3.2으로이 질문에 대한 대답은 더 이상 정확하지 않습니다. 집약 파이프 라인에 추가 된 새로운 $ 룩업 연산자 왼쪽 외부 본질적으로 동일 조인

    몽고 3.2으로이 질문에 대한 대답은 더 이상 정확하지 않습니다. 집약 파이프 라인에 추가 된 새로운 $ 룩업 연산자 왼쪽 외부 본질적으로 동일 조인

    https://docs.mongodb.org/master/reference/operator/aggregation/lookup/#pipe._S_lookup

    워드 프로세서 :

    {
       $lookup:
         {
           from: <collection to join>,
           localField: <field from the input documents>,
           foreignField: <field from the documents of the "from" collection>,
           as: <output array field>
         }
    }
    
  3. ==============================

    3.하지 않는 데이터베이스 조인 - 또는 문서 사이에 "연결"자동. 그러나 당신은 그것을 자신에게 클라이언트 측을 할 수 있습니다. 당신이 할 필요가있는 경우, 그 괜찮습니다,하지만 당신은 2000해야 할 일을했을 경우, 클라이언트 / 서버 턴어라운드의 수는 느린 동작을 만들 것입니다.

    하지 않는 데이터베이스 조인 - 또는 문서 사이에 "연결"자동. 그러나 당신은 그것을 자신에게 클라이언트 측을 할 수 있습니다. 당신이 할 필요가있는 경우, 그 괜찮습니다,하지만 당신은 2000해야 할 일을했을 경우, 클라이언트 / 서버 턴어라운드의 수는 느린 동작을 만들 것입니다.

    하여 MongoDB에서 공통 패턴을 매립한다. 관계에 정상화 것들 부분으로 나누어받을 때. 종종 몽고의이 조각은 그래서 어쨌든 필요에 가입, 하나의 문서 끝나게 없습니다. 하나가 필요할 때, 하나는 클라이언트 측 않습니다.

    고전 ORDER, ORDER-LINEITEM 예를 생각해 보자. 한 순서와 8 광고 항목은 관계형 9 행이다; MongoDB를 우리는 일반적으로 단지 포함 된 광고 항목의 배열 순서 단일 BSON 문서로이 모델 것입니다. 이 경우에 따라서,이 문제가 발생하지 않습니다 가입 할 수 있습니다. 그러나 아마 분리 수거하는 고객을 것 순서 - 클라이언트는 주문 문서에서 CUST_ID를 읽을 수 있고, 개별적으로 필요에 따라 다음을 가져 간다.

    나는 보라 mongodb.org 웹 사이트 스키마 설계 회담에 대한 일부 동영상과 슬라이드가 있습니다.

  4. ==============================

    4.MongoDB의에서 쿼리를 조인 한 종류는 목록에서 일치 넣어 IDS (IDLIST가), 그리고에 $로 다른 (또는 동일한) 컬렉션 사용 찾을 수 있습니까 해당 ID에 대해 하나의 콜렉션에 문의입니다 : IDLIST

    MongoDB의에서 쿼리를 조인 한 종류는 목록에서 일치 넣어 IDS (IDLIST가), 그리고에 $로 다른 (또는 동일한) 컬렉션 사용 찾을 수 있습니까 해당 ID에 대해 하나의 콜렉션에 문의입니다 : IDLIST

    u = db.friends.find({"friends": something }).toArray()
    idlist= []
    u.forEach(function(myDoc) { idlist.push(myDoc.id ); } )
    db.family.find({"id": {$in : idlist} } )
    
  5. ==============================

    5.첫 번째 예는 MongoDB를 참조가 많이 가입하지처럼 게으른 로딩처럼 행동하는 방법을 보여줍니다에 연결합니다. 쿼리는 이제 두 컬렉션에 오히려 당신에게 쿼리를 발생 한 다음 참조하여 다른 컬렉션에서 항목을 조회하는 것이이 없습니다.

    첫 번째 예는 MongoDB를 참조가 많이 가입하지처럼 게으른 로딩처럼 행동하는 방법을 보여줍니다에 연결합니다. 쿼리는 이제 두 컬렉션에 오히려 당신에게 쿼리를 발생 한 다음 참조하여 다른 컬렉션에서 항목을 조회하는 것이이 없습니다.

  6. ==============================

    6.MongoDB를 관계형없는 사실은 쓸모 고려해야 할 몇 가지 백성을 인도했다. 나는 당신이 DB를 설계하기 전에 무엇을하고 있는지 알고 있어야한다고 생각합니다. 당신은 MongoDB를 같이되는 NoSQL DB를 사용하도록 선택하는 경우, 당신은 더 나은 스키마를 구현한다. 더 많거나 적은 - - SQL 데이터베이스에 테이블을 닮은 이것은 당신의 컬렉션을 만들 것입니다. 또한, 필요한 경우가 아니면 효율성을 이유로 피하기 비정규 (삽입).

    MongoDB를 관계형없는 사실은 쓸모 고려해야 할 몇 가지 백성을 인도했다. 나는 당신이 DB를 설계하기 전에 무엇을하고 있는지 알고 있어야한다고 생각합니다. 당신은 MongoDB를 같이되는 NoSQL DB를 사용하도록 선택하는 경우, 당신은 더 나은 스키마를 구현한다. 더 많거나 적은 - - SQL 데이터베이스에 테이블을 닮은 이것은 당신의 컬렉션을 만들 것입니다. 또한, 필요한 경우가 아니면 효율성을 이유로 피하기 비정규 (삽입).

    당신이 당신의 자신의 형 NoSQL 데이터베이스를 설계 할 경우에, 나는 중포 기지 문서에보고를하는 것이 좋습니다. 당신은 그들의 서비스에 대한 데이터를 구성하는 방법을 이해한다면, 당신은 쉽게 당신을위한 유사한 패턴을 디자인 할 수 있습니다.

    다른 사람들이 지적한 것처럼, 당신은 내가 당신이 할 수 있습니다 다른 프레임 워크 모른다 (유성 (자바 스크립트 프레임 워크), 당신은 당신이 패키지로 서버 측에 가입 할 수있는 경우를 제외하고는 클라이언트 측에 합류해야 할 것 그래서). 그러나, 나는 당신이 선택에 가서 결정하기 전에이 문서를 읽으십시오.

    편집 28.04.17 : 최근 중포 기지가되는 NoSQL 데이터베이스 설계에 대한이 우수한 시리즈를 발표했다. 그들은 또한 피할 수있는 이유 조인 에피소드의 한 방법과 데이터베이스를 비정규로 같은 시나리오를 해결하기 위해 강조.

  7. ==============================

    7.몽구스의 사용을 고려? 그것은 당신에게 할 수있는 능력 몽고 데이터에 조인을 제공합니다.

    몽구스의 사용을 고려? 그것은 당신에게 할 수있는 능력 몽고 데이터에 조인을 제공합니다.

  8. ==============================

    8.당신은 몽구스를 사용하는 경우, 당신은 (당신이 하위 인구를 사용하는 가정)를 사용할 수 있습니다 :

    당신은 몽구스를 사용하는 경우, 당신은 (당신이 하위 인구를 사용하는 가정)를 사용할 수 있습니다 :

    Profile.findById profileId
      .select 'friends'
      .exec (err, profile) ->
        if err or not profile
          handleError err, profile, res
        else
          Status.find { profile: { $in: profile.friends } }, (err, statuses) ->
            if err
              handleErr err, statuses, res
            else
              res.json createJSON statuses
    

    이 프로필 (profileID가) 친구 중 하나에 속하는 상태를 검색합니다. 친구가 다른 프로필에 대한 참조의 배열입니다. 친구들과 프로필 스키마 정의 :

    schema = new mongoose.Schema
      # ...
    
      friends: [
        type: mongoose.Schema.Types.ObjectId
        ref: 'Profile'
        unique: true
        index: true
      ]
    
  9. ==============================

    9.당신은 MongoDB를 애드온, 그것의 greate를 사용하고, 병합에 가입 할 수 있도록하고 쿼리 builer를 만들 수 있습니다 시도 해봐 : https://github.com/petersirka/mongodb-addons

    당신은 MongoDB를 애드온, 그것의 greate를 사용하고, 병합에 가입 할 수 있도록하고 쿼리 builer를 만들 수 있습니다 시도 해봐 : https://github.com/petersirka/mongodb-addons

  10. ==============================

    10.MongoDB를 자신의 사용자이기 때문에, 차라리 자주 관련 컬렉션에서 데이터를 가져올 수 있었다. 사람들이되는 NoSQL 데이터베이스로 관계형 데이터베이스의 데이터를 저장할 때 필요하게 않는다 "접합". 여기에 내가, 내 친구와 함께 몽고 파이썬에서 조인 수행하기 위해 만든 것으로 라이브러리입니다 -

    MongoDB를 자신의 사용자이기 때문에, 차라리 자주 관련 컬렉션에서 데이터를 가져올 수 있었다. 사람들이되는 NoSQL 데이터베이스로 관계형 데이터베이스의 데이터를 저장할 때 필요하게 않는다 "접합". 여기에 내가, 내 친구와 함께 몽고 파이썬에서 조인 수행하기 위해 만든 것으로 라이브러리입니다 -

    https://pypi.python.org/pypi/mongojoin/1.0.0

    코드가 너무 복잡하고 잘 가치를 시도하지 않습니다!

  11. ==============================

    11.저도 같은 검색 게시물의 많은 통해 온 - "MongoDB를 조인"대안 또는 등가물. 내 대답은 많은 도움이 될 그래서 나 같은 사람입니다. 이것은 내가 찾고있을 것 답변입니다.

    저도 같은 검색 게시물의 많은 통해 온 - "MongoDB를 조인"대안 또는 등가물. 내 대답은 많은 도움이 될 그래서 나 같은 사람입니다. 이것은 내가 찾고있을 것 답변입니다.

    나는 익스프레스 프레임 워크와 몽구스를 사용하고 있습니다. 조인 대신에 인구라는 기능이있다.

    몽구스의 문서에서 언급 한 바와 같이.

    이 StackOverflow의 대답 프로그램을 사용하는 방법에 대한 간단한 예.

  12. from https://stackoverflow.com/questions/4067197/mongodb-and-joins by cc-by-sa and MIT license