Latest web development tutorials

MongoDB의 관계

MongoDB의 관계는 논리에서 여러 문서 사이의 상호 연계를 표명했다.

당신은 삽입 및 문서 사이의 참조에 의해 접촉을 설정할 수 있습니다.

MongoDB의 관계가 될 수 있습니다 :

  • 1 : 1 (1~1)
  • 1 : N (일 대 다수)
  • N : 1 (여러 쌍 1)
  • N : N (많은 많은)

다음으로 다음에 사용자와 사용자의 주소와의 관계를 고려한다.

사용자가 많은 관계로 하나, 여러 개의 주소를 가질 수 있습니다.

다음은 간단한 사용자 구성 문서입니다 :

{
   "_id":ObjectId("52ffc33cd85242f436000001"),
   "name": "Tom Hanks",
   "contact": "987654321",
   "dob": "01-01-1991"
}

다음은 간단한 구조 어드레스 문서이다 :

{
   "_id":ObjectId("52ffc4a5d85242602e000000"),
   "building": "22 A, Indiana Apt",
   "pincode": 123456,
   "city": "Los Angeles",
   "state": "California"
} 

임베디드 관계

매립 방법을 사용하여, 우리는 사용자의 문서에 대한 사용자의 주소를 포함 할 수있다 :

   "_id":ObjectId("52ffc33cd85242f436000001"),
   "contact": "987654321",
   "dob": "01-01-1991",
   "name": "Tom Benzamin",
   "address": [
      {
         "building": "22 A, Indiana Apt",
         "pincode": 123456,
         "city": "Los Angeles",
         "state": "California"
      },
      {
         "building": "170 A, Acropolis Apt",
         "pincode": 456789,
         "city": "Chicago",
         "state": "Illinois"
      }]
} 

위의 데이터는 하나의 문서에 저장되고보다 쉽게 ​​액세스하고 데이터를 유지할 수있다. 사용자는 사용자의 주소를 질의 할 수 :

>db.users.findOne({"name":"Tom Benzamin"},{"address":1})

참고 : 위의 쿼리DB 데이터베이스 사용자와컬렉션을 나타냅니다.

데이터 구조의 단점은 데이터가 대형화하게 사용자가 증가하는 양을 충족하고있는 경우, 판독 성능에 영향을 작성한다는 것이다.

참조 형의 관계

참조 타입 관계는 종종 사용자 데이터 파일과 유저 어드레스 데이터 파일이별도의 ID 필드 참조 문헌에 의한 관계를 구축하는 것을 데이터베이스 설계 방법에 사용된다.

{
   "_id":ObjectId("52ffc33cd85242f436000001"),
   "contact": "987654321",
   "dob": "01-01-1991",
   "name": "Tom Benzamin",
   "address_ids": [
      ObjectId("52ffc4a5d85242602e000000"),
      ObjectId("52ffc4a5d85242602e000001")
   ]
}

위의예에서 사용자 주소 (ObjectId가) 배열의 사용자 ID의 오브젝트 필드를 포함 address_ids 문서.

우리는 사용자의 주소에 대한 자세한 정보를 얻을 수 이러한 개체 ID를 사용자의 주소 (ObjectId가)를 읽을 수 있습니다.

이 방법은 두 쿼리, 첫 번째 쿼리의 개체 ID 사용자의 주소 (ObjectId가) ID로 사용자의 쿼리에 대한 자세한 내용은 제 주소가 필요합니다.

>var result = db.users.findOne({"name":"Tom Benzamin"},{"address_ids":1})
>var addresses = db.address.find({"_id":{"$in":result["address_ids"]}})