MongoDB 데이터베이스 참조
이전 장 MongoDB 관계에서 데이터 구조 문서 표준화를 위한 MongoDB 참조를 언급했습니다.
MongoDB 참조에는 두 가지 유형이 있습니다.
Manual References(Manual References)
DBRefs
DBRefs 대 수동 참조
다른 주소(집 주소, 사무실 주소, 우편 주소)를 다른 컬렉션(address_home, address_office, address_mailing 등)에 저장하는 시나리오를 고려해보세요. ) 주소 등).
이런 방식으로 다른 주소를 호출할 때도 컬렉션을 지정해야 합니다. 문서가 여러 컬렉션의 문서를 참조하는 경우 DBRef를 사용해야 합니다.
DBRef 사용
DBRef 형식:
{ $ref : , $id : , $db : }
세 필드의 의미는 다음과 같습니다.
$ ref : 컬렉션 이름
$id: 참조 ID
$db: 데이터베이스 이름, 선택적 매개변수
다음 예에서 사용자 데이터 문서는 DBRef를 사용하고 필드 주소는
{ "_id":ObjectId("53402597d852426020000002"), "address": { "$ref": "address_home", "$id": ObjectId("534009e4d852427820000002"), "$db": "w3cschoolcc"}, "contact": "987654321", "dob": "01-01-1991", "name": "Tom Benzamin" }
address입니다. DBRef 필드는 참조된 주소 문서가 다음 위치에 있는 w3cschoolcc 데이터베이스임을 지정합니다. address_home 컬렉션이며 ID는 534009e4d852427820000002입니다.
다음 코드에서는 $ref 매개변수(address_home 컬렉션)를 지정하여 컬렉션에서 지정된 ID의 사용자 주소 정보를 찾습니다.
>var user = db.users.findOne({"name":"Tom Benzamin"}) >var dbRef = user.address >db[dbRef.$ref].findOne({"_id":(dbRef.$id)})
위의 예에서는 주소 데이터를 다음과 같이 반환합니다. address_home 컬렉션:
{ "_id" : ObjectId("534009e4d852427820000002"), "building" : "22 A, Indiana Apt", "pincode" : 123456, "city" : "Los Angeles", "state" : "California" }