Mongoose: DBRef์˜ ๋ฌธ์ œ - ์ž˜๋ชป๋œ ๊ตฌํ˜„?

์— ๋งŒ๋“  2014๋…„ 01์›” 28์ผ  ยท  3์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: Automattic/mongoose

์•ˆ๋…•ํ•˜์„ธ์š”,

์ดํ•ดํ•˜๋Š” ๋ฐ ๋ฌธ์ œ๊ฐ€ ์žˆ๊ฑฐ๋‚˜ ๋ฒ„๊ทธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

์‹œ์ž‘ํ•˜์ž. ๋‹ค์Œ์€ 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๋ฅผ ์ €์žฅํ•˜์ง€ ์•Š๋Š” ๊ฒƒ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

new feature

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

์ด ๋ฌธ์ œ์— ๋Œ€ํ•œ Mongoose ๊ฐœ๋ฐœ์ž์˜ ์˜๊ฒฌ์ด ์•„์ง ์—†์Šต๋‹ˆ๊นŒ? ์ด๊ฒƒ์€ ๋™์ผํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์“ฐ๊ณ  ์ฝ๋Š” ๋“œ๋ผ์ด๋ฒ„๊ฐ€ ๋‘˜ ์ด์ƒ ์žˆ์„ ๋•Œ ๊ณ„์† ๋ฐœ์ƒํ•˜๋Š” ๋ฐ˜๋ณต์ ์ธ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.

Node ๋“œ๋ผ์ด๋ฒ„๋Š” DBRef๋ฅผ ์ง€์›ํ•˜์ง€๋งŒ Mongoose๊ฐ€ ์—ฌ์ „ํžˆ DBRef๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์ด ์ด์ƒํ•ฉ๋‹ˆ๋‹ค.

๋ชจ๋“  3 ๋Œ“๊ธ€

+1
๊ต๋ฆฌ mongodb odm์„ ์‚ฌ์šฉํ•˜๋Š” PHP ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ๊ณผ ๋™์ผํ•œ ๋ฌธ์ œ์— ์ง๋ฉดํ–ˆ์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ mongodb DBRefs ๊ฐœ์ฒด๊ฐ€ ์ฐธ์กฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ํ˜„์žฌ ๊ธฐ์กด db๋ฅผ mongoose์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
๋‹ค๋ฅธ ์Šคํ‚ค๋งˆ ์œ ํ˜•(Schema.DBRef ?)์„ ์ถ”๊ฐ€ํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ?
๊ทธ๋Ÿฌ๋ฉด ์ฃผ์–ด์ง„ ์ •๋ณด๊ฐ€ ํฌํ•จ๋œ ๋ฌธ์„œ๊ฐ€ ๋กœ๋“œ๋ฉ๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ์— ๋Œ€ํ•œ Mongoose ๊ฐœ๋ฐœ์ž์˜ ์˜๊ฒฌ์ด ์•„์ง ์—†์Šต๋‹ˆ๊นŒ? ์ด๊ฒƒ์€ ๋™์ผํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์“ฐ๊ณ  ์ฝ๋Š” ๋“œ๋ผ์ด๋ฒ„๊ฐ€ ๋‘˜ ์ด์ƒ ์žˆ์„ ๋•Œ ๊ณ„์† ๋ฐœ์ƒํ•˜๋Š” ๋ฐ˜๋ณต์ ์ธ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.

Node ๋“œ๋ผ์ด๋ฒ„๋Š” DBRef๋ฅผ ์ง€์›ํ•˜์ง€๋งŒ Mongoose๊ฐ€ ์—ฌ์ „ํžˆ DBRef๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์ด ์ด์ƒํ•ฉ๋‹ˆ๋‹ค.

MongoDB ๋ฌธ์„œ์—์„œ๋Š” dbref๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค . ํ•ญ์ƒ ์Šค์Šค๋กœ ์ฟผ๋ฆฌ๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰