0% found this document useful (0 votes)
13 views

Mongodb Relationships2

Uploaded by

Javier Morales
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
13 views

Mongodb Relationships2

Uploaded by

Javier Morales
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 1

MONGODB - DATABASE REFERENCES

http://www.tutorialspoint.com/mongodb/mongodb_database_references.htm Copyright © tutorialspoint.com

As seen in the last chapter of MongoDB Relationships, to implement a normalized database


structure in MongoDB we use the concept of Referenced Relationships also referred to as
Manual References in which we manually store the referenced document's id inside other
document. However, in cases where a document contains references from different collections, we
can use MongoDB DBRefs.

DBRefs vs Manual References


As an example scenario where we would use DBRefs instead of Manual References, consider a
database where we are storing different types of addresses home, office, mailing, etc in different
collections addressh ome, addresso ffice, addressmailing, etc. Now, when a user collection's document
references an address, it also needs to specify which collection to look into based on the address
type. In such scenarios where a document references documents from many collections, we
should use DBRefs.

Using DBRefs
There are three fields in DBRefs:

$ref: This field specifies the collection of the referenced document

$id: This field specifies the _id field of the referenced document

$db: This is an optional field and contains name of the database in which the referenced
document lies

Consider a sample user document having DBRef field address as shown below:

{
"_id":ObjectId("53402597d852426020000002"),
"address": {
"$ref": "address_home",
"$id": ObjectId("534009e4d852427820000002"),
"$db": "tutorialspoint"},
"contact": "987654321",
"dob": "01-01-1991",
"name": "Tom Benzamin"
}

The address DBRef field here specifies that the referenced address document lies in
address_home collection under tutorialspoint database and has an id of
534009e4d852427820000002.

The following code dynamically looks in the collection specified by $ref parameter
(address_home in our case) for a document with id as specified by $id parameter in DBRef.

>var user = db.users.findOne({"name":"Tom Benzamin"})


>var dbRef = user.address
>db[dbRef.$ref].findOne({"_id":(dbRef.$id)})

The above code returns the following address document present in address_home collection:

{
"_id" : ObjectId("534009e4d852427820000002"),
"building" : "22 A, Indiana Apt",
"pincode" : 123456,
"city" : "Los Angeles",
"state" : "California"
}
Loading [MathJax]/jax/output/HTML-CSS/fonts/TeX/fontdata.js

You might also like