์๋ ํ์ธ์,
์ดํดํ๋ ๋ฐ ๋ฌธ์ ๊ฐ ์๊ฑฐ๋ ๋ฒ๊ทธ๊ฐ ์์ต๋๋ค.
์์ํ์. ๋ค์์ DBRef์ ๋ํ ๋ฌธ์์
๋๋ค.
http://docs.mongodb.org/manual/reference/database-references/#dbrefs
์ฐธ์กฐ ๋ฌธ์์ ๊ตฌ์กฐ๋ ๋ค์๊ณผ ๊ฐ์์ผ ํฉ๋๋ค.
{
"_id" : ObjectId("5126bbf64aed4daf9e2ab771"),
// .. application fields
"creator" : {
"$ref" : "creators",
"$id" : ObjectId("5126bc054aed4daf9e2ab772"),
"$db" : "users"
}
}
์ด์ ์ด ์(example1)๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
https://gist.github.com/hastebrot/1170907
์ด ์ฝ๋๋ฅผ ์คํํ๋ฉด ๋ค์๊ณผ ๊ฐ์ ๋ด์ฉ์ด ์์ต๋๋ค.
์ด์ผ๊ธฐ:
"title": "A man who cooked Nintendo",
"_creator": {
"$oid": "52e7dcea3d9cd59c13702e3d"
},
"_id": {
"$oid": "52e7dceb3d9cd59c13702e3e"
},
"fans": [],
"__v": 0
์ฌ๋๋ค:
"name": "Aaron",
"age": 100,
"_id": {
"$oid": "52e7dcea3d9cd59c13702e3d"
},
"stories": [],
"__v": 0
์ฐ๋ฆฌ ํ์๋ MongoDB์ฉ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ Java๋ก ์์ฑ๋ ์์ ์ ํ๋ฆฌ์ผ์ด์ ์ด ์์ง๋ง ์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ MongoDB ๋ฌธ์์ ๊ฐ์ด ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํฉ๋๋ค.
....//other fields
"user": {
"$ref": "users",
"$id": {
"$oid": "52c6c497c08e6fcf37000001"
}
}
๋ชฝ๊ตฌ์ค ๊ตฌํ์์๋ง ์๋ํ๋ ๊ฒ์ฒ๋ผ ๋ณด์ด๊ธฐ ๋๋ฌธ์ ๋ฐ์ดํฐ๋ฅผ ์ฑ์ธ ์ ์์ต๋๋ค.
๋ด๊ฐ ํ๋ ธ๋ค๋ฉด ์ ์ ํ์ญ์์ค. ๊ทธ๋ฌ๋ ์ ์๊ฒ๋ ์ค๋ช ์์ ์ค๋ช ๋ ๋๋ก DBRef๋ฅผ ์ ์ฅํ์ง ์๋ ๊ฒ๊ณผ ๊ฐ์ต๋๋ค.
+1
๊ต๋ฆฌ mongodb odm์ ์ฌ์ฉํ๋ PHP ์์ฉ ํ๋ก๊ทธ๋จ๊ณผ ๋์ผํ ๋ฌธ์ ์ ์ง๋ฉดํ์ต๋๋ค. ํ์ฌ mongodb DBRefs ๊ฐ์ฒด๊ฐ ์ฐธ์กฐ๋ฅผ ์ ์ฅํ๋ ๋ฐ ์ฌ์ฉ๋์ง ์๊ธฐ ๋๋ฌธ์ ํ์ฌ ๊ธฐ์กด db๋ฅผ mongoose์ ํจ๊ป ์ฌ์ฉํ ์ ์์ต๋๋ค.
๋ค๋ฅธ ์คํค๋ง ์ ํ(Schema.DBRef ?)์ ์ถ๊ฐํด์ผ ํฉ๋๊น?
๊ทธ๋ฌ๋ฉด ์ฃผ์ด์ง ์ ๋ณด๊ฐ ํฌํจ๋ ๋ฌธ์๊ฐ ๋ก๋๋ฉ๋๋ค.
์ด ๋ฌธ์ ์ ๋ํ Mongoose ๊ฐ๋ฐ์์ ์๊ฒฌ์ด ์์ง ์์ต๋๊น? ์ด๊ฒ์ ๋์ผํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฐ๊ณ ์ฝ๋ ๋๋ผ์ด๋ฒ๊ฐ ๋ ์ด์ ์์ ๋ ๊ณ์ ๋ฐ์ํ๋ ๋ฐ๋ณต์ ์ธ ๋ฌธ์ ์ ๋๋ค.
Node ๋๋ผ์ด๋ฒ๋ DBRef๋ฅผ ์ง์ํ์ง๋ง Mongoose๊ฐ ์ฌ์ ํ DBRef๋ฅผ ์ง์ํ์ง ์๋๋ค๋ ๊ฒ์ด ์ด์ํฉ๋๋ค.
MongoDB ๋ฌธ์์์๋ dbref๋ฅผ ์ฌ์ฉํ์ง ์๋ ๊ฒ์ด ์ข์ต๋๋ค . ํญ์ ์ค์ค๋ก ์ฟผ๋ฆฌ๋ฅผ ์ํํ ์ ์์ต๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
์ด ๋ฌธ์ ์ ๋ํ Mongoose ๊ฐ๋ฐ์์ ์๊ฒฌ์ด ์์ง ์์ต๋๊น? ์ด๊ฒ์ ๋์ผํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฐ๊ณ ์ฝ๋ ๋๋ผ์ด๋ฒ๊ฐ ๋ ์ด์ ์์ ๋ ๊ณ์ ๋ฐ์ํ๋ ๋ฐ๋ณต์ ์ธ ๋ฌธ์ ์ ๋๋ค.
Node ๋๋ผ์ด๋ฒ๋ DBRef๋ฅผ ์ง์ํ์ง๋ง Mongoose๊ฐ ์ฌ์ ํ DBRef๋ฅผ ์ง์ํ์ง ์๋๋ค๋ ๊ฒ์ด ์ด์ํฉ๋๋ค.