정환타 개발노트

MongoDB Database 참조(References) 본문

Dev-Database/NoSQL

MongoDB Database 참조(References)

JungHwanTa 2020. 2. 5. 14:42

MongoDB에서 DB를 참조하는 방법은 두가지로 나뉜다.

하나는 수동 참조(Manual Reference)이며, 다른 하나는 "DBRefs"를 사용하는 것이다.

 

수동 참조

수동 참조 방식은 다른 document의 _id 필드를 참조를 사용할 document의 하나의 필드로 저장하는 방식이다. 

필드 중 하나인 _id 값을 통해 참조할 document의 데이터를 가져온다. 대부분의 경우에는 수동 참조 방식을 사용한다.

 

아래에는 첫번째인 place 컬렉션과 두번째인 poeple 컬력센 두개로 구성되어 있다.

original_id = ObjectId()

db.places.insert({
    "_id": original_id,
    "name": "Broadway Center",
    "url": "bc.example.net"
})

db.people.insert({
    "name": "Erin",
    "places_id": original_id,
    "url":  "bc.example.net/Erin"
})

people 컬렉션에서는 places_id를 통하여 places로 접근하고 데이터를 참조하여 가져올 수 있다.

위처럼 비교적 간단하기에 가장 많이 사용되는 참조 방식이다.

 

DBRefs

DBRefs는 특정 참조 유형을 나타내는 것이 아닌 문서 자체를 나타내는 규칙이다.

_id 필드의 이름 값 외에 컬렉션 이름, 경우에 띠라서는 db이름까지도 포함이 된다.

DBRef는 총 3개의 인자를 가질 수 있는데 다음과 같다.

  • $ref - 참조할 document의 컬렉션 이름
  • $id - document 내의 _id 필드
  • $db - 참조할 document의 db 이름

DBRef는 다음과 같은 형식으로 저장된다.

{ "$ref" : <value>, "$id" : <value>, "$db" : <value> }

 

Comments