2012-08-04 15 views
2

코드를 통해 Spring으로 말할 수있는 방법이 있습니까? 예를 들어 Person의 MongoDB에 테이블/컬렉션이 있습니다. 다른 테이블과 1 대 1로 많은 관계가 있다고 어떻게 생각하십니까? Spring을 통해 MongoDB에서 가능합니까?MongoDB Relationships

+0

그런 관계로 무엇을 할 것입니까? –

+0

이것이 가능한지 알고 싶었습니다. MongoDB는 NoSQL 데이터베이스입니다. 예를 들어, 직원은 많은 자동차를 가지고 있습니다. 이게 실제로 가능합니까? – user1348855

+1

NoSQL의 모든 목적이 관계 (외래 키)를 갖고 있지 않다고 생각했습니다. –

답변

2

MongoDB는 다른 데이터베이스 및 컬렉션과 '관계'를 가질 수 있습니다.이를 수동 참조 및 DBRef라고합니다. 설명서 for database references을보십시오. 그러나 단일 컬렉션을 사용하는 것과 비교할 때 거의 항상 성능이 저하 될 수 있으므로주의해서 사용해야합니다. 응용 프로그램이나 드라이버가 원본 컬렉션에서 한 번, 다른 컬렉션에서 한 번 참조를 해결하기 위해 데이터에 대해 두 번 쿼리해야합니다.

DBRef를 사용하여 MongoDB에서 조인을 시도하고 에뮬레이트하는 것은 관계형 모델에서 오는 사람들에게는 흔히있는 실수입니다. 당신이주는 예에서, 일대 다 관계가 가능성이 더 좋아, 내장과 함께 하나의 컬렉션 모델로는 다음과 같다

{ 
    "_id" : ObjectId(), 
    "Name" : "Bob", 
    "Cars" : { 
     "CarName1" : "FirstCar", 
     "CarName2" : "SecondCar" 
    } 
} 

당신은 자세한 내용은 Schema Design에있는 문서를 확인하실 수 있습니다

2

MongoDb는 여러 콜렉션 간의 관계를 지원하지 않습니다. 이는 데이터베이스의 SQL 접근 방식과 다릅니다. No-SQL은 스키마 디자인 자체에서 유지 관리되는 논리적 관계를 지원합니다. 문서의 부분에 대한 종속성을 줄이고 프로세스의 속도를 높이는 것이 기본 목표입니다. 데모 예제를 보려면 mongodb-useful-basics