Docs Menu
Docs Home
/ / /
Go ๋“œ๋ผ์ด๋ฒ„
/ / /

์ฟผ๋ฆฌ ์ง€์ •

์ด ํŽ˜์ด์ง€์˜ ๋‚ด์šฉ

  • ๊ฐœ์š”
  • ๋ฆฌํ„ฐ๋Ÿด ๊ฐ’
  • ๋น„๊ต
  • ๋…ผ๋ฆฌ
  • ์š”์†Œ
  • ํ‰๊ฐ€
  • ๋ฐฐ์—ด
  • ๋น„ํŠธ ๋‹จ์œ„
  • ์ถ”๊ฐ€ ์ •๋ณด

์ด ๊ฐ€์ด๋“œ์—์„œ๋Š” ๋ฌธ์„œ์˜ ํ•˜์œ„ ์ง‘ํ•ฉ๊ณผ ์ผ์น˜ํ•˜๋„๋ก ์ฟผ๋ฆฌ๋ฅผ ์ง€์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ฐฐ์šธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฌธ์„œ์˜ ํ•˜์œ„ ์ง‘ํ•ฉ์„ ์ผ์น˜์‹œํ‚ค๋ ค๋ฉด ์ผ์น˜ ์กฐ๊ฑด์ด ํฌํ•จ๋œ ์ฟผ๋ฆฌ ํ•„ํ„ฐ๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. ์ผ์น˜ ์กฐ๊ฑด์€ ๋ฌธ์„œ์— ํ‘œ์‹œํ•˜๋ ค๋Š” ํ•„๋“œ์™€ ๊ฐ’์œผ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค. ์ฟผ๋ฆฌ ํ•„ํ„ฐ์—๋Š” ๊ฒฐ๊ณผ ์ง‘ํ•ฉ์— ํฌํ•จํ•  ๋ฌธ์„œ๋ฅผ ๊ฒฐ์ •ํ•˜๊ธฐ ์œ„ํ•ด ํ•˜๋‚˜ ์ด์ƒ์˜ ์ผ์น˜ ์กฐ๊ฑด ์ง‘ํ•ฉ์ด ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ฟผ๋ฆฌ ํ•„ํ„ฐ์—์„œ ๋ฆฌํ„ฐ๋Ÿด ๊ฐ’ ๋˜๋Š” ์ฟผ๋ฆฌ ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ•„๋“œ๋ฅผ ์ผ์น˜์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฟผ๋ฆฌ ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ˆ˜ํ•™์  ๋˜๋Š” ๋…ผ๋ฆฌ์  ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜์—ฌ ์ปฌ๋ ‰์…˜ ๋‚ด์—์„œ ๋ฌธ์„œ๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฆฌํ„ฐ๋Ÿด ๊ฐ’์ด ์žˆ๋Š” ์ผ์น˜ ์กฐ๊ฑด์€ ๋‹ค์Œ ํ˜•์‹์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

filter := bson.D{{"<field>", "<value>"}}

์ฟผ๋ฆฌ ์—ฐ์‚ฐ์ž๊ฐ€ ์žˆ๋Š” ์ผ์น˜ ์กฐ๊ฑด์€ ๋‹ค์Œ ํ˜•์‹์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

filter := bson.D{{"<field>", bson.D{{"<operator>", "<value>"}}}}

๋‹ค์Œ ์„น์…˜์—์„œ๋Š” Find() ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฌธ์„œ์˜ ํ•˜์œ„ ์ง‘ํ•ฉ์„ ์ผ์น˜์‹œํ‚ค๊ธฐ ์œ„ํ•ด ๋ฆฌํ„ฐ๋Ÿด ๊ฐ’๊ณผ ์ฟผ๋ฆฌ ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์ด ์„น์…˜์˜ ์˜ˆ์‹œ์—์„œ๋Š” ๋‹ค์Œ Tea ๊ตฌ์กฐ์ฒด๋ฅผ tea ์ปฌ๋ ‰์…˜์— ์žˆ๋Š” ๋ฌธ์„œ์˜ ๋ชจ๋ธ๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

type Tea struct {
Type string
Rating int32
Vendor []string `bson:"vendor,omitempty" json:"vendor,omitempty"`
}

omitempty struct ํƒœ๊ทธ๋Š” ๋น„์–ด ์žˆ์„ ๋•Œ ์‚ฝ์ž…๋œ ๋ฌธ์„œ์—์„œ ํ•ด๋‹น ํ•„๋“œ๋ฅผ ์ƒ๋žตํ•ฉ๋‹ˆ๋‹ค.

์ด ๊ฐ€์ด๋“œ์˜ ์˜ˆ์‹œ๋ฅผ ์‹คํ–‰ํ•˜๋ ค๋ฉด ๋‹ค์Œ ์Šค๋‹ˆํŽซ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ƒ˜ํ”Œ ๋ฐ์ดํ„ฐ๋ฅผ db ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ tea ์ปฌ๋ ‰์…˜์— ๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค.

coll := client.Database("db").Collection("tea")
docs := []interface{}{
Tea{Type: "Masala", Rating: 10, Vendor: []string{"A", "C"}},
Tea{Type: "English Breakfast", Rating: 6},
Tea{Type: "Oolong", Rating: 7, Vendor: []string{"C"}},
Tea{Type: "Assam", Rating: 5},
Tea{Type: "Earl Grey", Rating: 8, Vendor: []string{"A", "B"}},
}
result, err := coll.InsertMany(context.TODO(), docs)

ํŒ

์กด์žฌํ•˜์ง€ ์•Š๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฐ collection

์“ฐ๊ธฐ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ๋•Œ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฐ collection์ด ์—†๋Š” ๊ฒฝ์šฐ ์„œ๋ฒ„๋Š” ์ด๋ฅผ ์•”์‹œ์ ์œผ๋กœ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

๊ฐ ๋ฌธ์„œ์—๋Š” ์ฐจ ์ข…๋ฅ˜, ๋“ฑ๊ธ‰, ํ•ด๋‹น ํ’ˆ์ข…์„ ํŒ๋งคํ•˜๋Š” ๊ณต๊ธ‰์—…์ฒด๊ฐ€ ์„ค๋ช…๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ํ•ญ๋ชฉ์€ type, rating ๋ฐ vendor ํ•„๋“œ์— ํ•ด๋‹นํ•ฉ๋‹ˆ๋‹ค.

๋ฆฌํ„ฐ๋Ÿด ๊ฐ’ ์ฟผ๋ฆฌ ํ•„ํ„ฐ๋Š” ์ผ์น˜ ๊ธฐ์ค€๊ณผ ์ •ํ™•ํžˆ ์ผ์น˜ํ•˜๋Š” ๋ฌธ์„œ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

ํŒ

๋นˆ ์ฟผ๋ฆฌ ํ•„ํ„ฐ๋ฅผ ์ง€์ •ํ•˜๋ฉด CRUD ์ž‘์—…์€ ์ปฌ๋ ‰์…˜์˜ ๋ชจ๋“  ๋ฌธ์„œ์™€ ์ผ์น˜ํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ ์˜ˆ๋Š” type์ด 'Oolong'์ธ ๋ฌธ์„œ๋ฅผ ์ผ์น˜์‹œํ‚ต๋‹ˆ๋‹ค.

filter := bson.D{{"type", "Oolong"}}
cursor, err := coll.Find(context.TODO(), filter)
if err != nil {
panic(err)
}
var results []Tea
if err = cursor.All(context.TODO(), &results); err != nil {
panic(err)
}
for _, result := range results {
res, _ := bson.MarshalExtJSON(result, false, false)
fmt.Println(string(res))
}
{"type":"Oolong","rating":7,"vendor":["C"]}

ํŒ

๋ฆฌํ„ฐ๋Ÿด ๊ฐ’ ์ฟผ๋ฆฌ๋Š” $eq ๋น„๊ต ์—ฐ์‚ฐ์ž์™€ ๋™์ผํ•œ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋‹ค์Œ ์ฟผ๋ฆฌ ํ•„ํ„ฐ๋Š” ๋™์ผํ•œ ๊ฒฐ๊ณผ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

filter := bson.D{{"type", "Oolong"}}
filter := bson.D{{"type", bson.D{{"$eq", "Oolong"}}}}

๋น„๊ต ์—ฐ์‚ฐ์ž๋Š” ์ผ์น˜ ๊ธฐ์ค€์— ์ง€์ •๋œ ๊ฐ’์„ ๊ธฐ์ค€์œผ๋กœ ๋ฌธ์„œ์˜ ๊ฐ’์„ ๋ถ„์„ํ•ฉ๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์ธ ๋น„๊ต ์—ฐ์‚ฐ์ž๋กœ๋Š” '๋ณด๋‹ค ํฐ(greater than)' ๋น„๊ต๋ฅผ ์œ„ํ•œ $gt, '๋ณด๋‹ค ์ž‘์€(less than)' ๋น„๊ต๋ฅผ ์œ„ํ•œ $lte, '๊ฐ™์ง€ ์•Š์€(not equal to)' ๋น„๊ต๋ฅผ ์œ„ํ•œ $ne ๋“ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ ์˜ˆ๋Š” rating์ด 7๋ณด๋‹ค ์ž‘์€ ๋ฌธ์„œ๋ฅผ ์ผ์น˜์‹œํ‚ต๋‹ˆ๋‹ค.

filter := bson.D{{"rating", bson.D{{"$lt", 7}}}}
cursor, err := coll.Find(context.TODO(), filter)
if err != nil {
panic(err)
}
var results []Tea
if err = cursor.All(context.TODO(), &results); err != nil {
panic(err)
}
for _, result := range results {
res, _ := bson.MarshalExtJSON(result, false, false)
fmt.Println(string(res))
}
{"type":"English Breakfast","rating":6}
{"type":"Assam","rating":5}

๋น„๊ต ์—ฐ์‚ฐ์ž์˜ ์ „์ฒด ๋ชฉ๋ก์€ ๋น„๊ต ์ฟผ๋ฆฌ ์—ฐ์‚ฐ์ž ํŽ˜์ด์ง€๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

๋…ผ๋ฆฌ ์—ฐ์‚ฐ์ž์—๋Š” ์ตœ์†Œ ๋‘ ๊ฐœ์˜ ์ผ์น˜ ์กฐ๊ฑด์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๋ฌธ์„œ๊ฐ€ ์ง€์ •๋œ ๊ธฐ์ค€์„ ๋ชจ๋‘ ์ถฉ์กฑํ•˜๋Š”์ง€, ํ•˜๋‚˜๋งŒ ์ถฉ์กฑํ•˜๋Š”์ง€ ๋˜๋Š” ์ „ํ˜€ ์ถฉ์กฑํ•˜์ง€ ์•Š๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์ธ ๋…ผ๋ฆฌ ์—ฐ์‚ฐ์ž๋กœ๋Š” ๋ชจ๋“  ์ผ์น˜ ๊ธฐ์ค€์ด ์ฐธ์ด์–ด์•ผ ํ•˜๋Š” $and, ์ผ์น˜ ๊ธฐ์ค€ ์ค‘ ํ•˜๋‚˜ ์ด์ƒ์ด ์ฐธ์ด์–ด์•ผ ํ•˜๋Š” $or ๋“ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ ์˜ˆ๋Š” rating์ด 7๋ณด๋‹ค ํฌ๊ณ  10 ๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ๋ฌธ์„œ๋ฅผ ์ผ์น˜์‹œํ‚ต๋‹ˆ๋‹ค.

filter := bson.D{
{"$and",
bson.A{
bson.D{{"rating", bson.D{{"$gt", 7}}}},
bson.D{{"rating", bson.D{{"$lte", 10}}}},
},
},
}
cursor, err := coll.Find(context.TODO(), filter)
if err != nil {
panic(err)
}
var results []Tea
if err = cursor.All(context.TODO(), &results); err != nil {
panic(err)
}
for _, result := range results {
res, _ := bson.MarshalExtJSON(result, false, false)
fmt.Println(string(res))
}
{"type":"Masala","rating":10,"vendor":["A","C"]}
{"type":"Earl Grey","rating":8,"vendor":["A","B"]}

๋…ผ๋ฆฌ ์—ฐ์‚ฐ์ž์˜ ์ „์ฒด ๋ชฉ๋ก์€ ๋…ผ๋ฆฌ ์ฟผ๋ฆฌ ์—ฐ์‚ฐ์ž ํŽ˜์ด์ง€๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

ํŒ

๋ฆฌํ„ฐ๋Ÿด ์ฟผ๋ฆฌ ๋‚ด $eq ๋น„๊ต ์—ฐ์‚ฐ์ž์™€ ์œ ์‚ฌํ•œ ์—ฌ๋Ÿฌ ์ผ์น˜ ๊ธฐ์ค€์€ $and ๋…ผ๋ฆฌ ์—ฐ์‚ฐ์ž์™€ ๋™์ผํ•œ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋‹ค์Œ ์ฟผ๋ฆฌ ํ•„ํ„ฐ๋Š” ๋™์ผํ•œ ๊ฒฐ๊ณผ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค:

filter := bson.D{{"type", "Oolong"}, {"rating", 7}}
filter := bson.D{
{"$and",
bson.A{
bson.D{{"type", "Oolong"}},
bson.D{{"rating", 7}},
}},
}

์š”์†Œ ์—ฐ์‚ฐ์ž๋Š” ์ง€์ •๋œ ํ•„๋“œ์˜ ์กด์žฌ ์—ฌ๋ถ€ ๋˜๋Š” ์œ ํ˜•์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ์€ vendor ํ•„๋“œ๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๋ฌธ์„œ์™€ ์ผ์น˜ํ•˜๋Š” ์˜ˆ์ž…๋‹ˆ๋‹ค.

filter := bson.D{{"vendor", bson.D{{"$exists", false}}}}
cursor, err := coll.Find(context.TODO(), filter)
if err != nil {
panic(err)
}
var results []Tea
if err = cursor.All(context.TODO(), &results); err != nil {
panic(err)
}
for _, result := range results {
res, _ := bson.MarshalExtJSON(result, false, false)
fmt.Println(string(res))
}
{"type":"English Breakfast","rating":6}
{"type":"Assam","rating":5}

์š”์†Œ ์—ฐ์‚ฐ์ž์˜ ์ „์ฒด ๋ชฉ๋ก์€ ์š”์†Œ ์ฟผ๋ฆฌ ์—ฐ์‚ฐ์ž ํŽ˜์ด์ง€๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

ํ‰๊ฐ€ ์—ฐ์‚ฐ์ž๋Š” ์ผ์น˜ ๊ธฐ์ค€์— ์ง€์ •๋œ ๊ฐ’์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๋ฌธ์„œ์˜ ๊ฐ’์„ ๋ถ„์„ํ•ฉ๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์ธ ํ‰๊ฐ€ ์—ฐ์‚ฐ์ž์—๋Š” ํ•„๋“œ ๊ฐ’์ด ์ง€์ •๋œ ์ •๊ทœ ํ‘œํ˜„์‹๊ณผ ์ผ์น˜ํ•ด์•ผ ํ•˜๋Š” $regex, ํ•„๋“œ ๊ฐ’์— ์ง€์ •๋œ ๋ฌธ์ž์—ด์ด ํฌํ•จ๋˜์–ด์•ผ ํ•˜๋Š” $text ๋“ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ ์˜ˆ๋Š” type์ด ๋ฌธ์ž 'E'๋กœ ์‹œ์ž‘ํ•˜๋Š” ๋ฌธ์„œ์™€ ์ผ์น˜ํ•ฉ๋‹ˆ๋‹ค.

filter := bson.D{{"type", bson.D{{"$regex", "^E"}}}}
cursor, err := coll.Find(context.TODO(), filter)
if err != nil {
panic(err)
}
var results []Tea
if err = cursor.All(context.TODO(), &results); err != nil {
panic(err)
}
for _, result := range results {
res, _ := bson.MarshalExtJSON(result, false, false)
fmt.Println(string(res))
}
{"type":"English Breakfast","rating":6}
{"type":"Earl Grey","rating":8,"vendor":["A","B"]}

ํ‰๊ฐ€ ์—ฐ์‚ฐ์ž์˜ ์ „์ฒด ๋ชฉ๋ก์€ ํ‰๊ฐ€ ์ฟผ๋ฆฌ ์—ฐ์‚ฐ์ž ํŽ˜์ด์ง€๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

๋ฐฐ์—ด ์—ฐ์‚ฐ์ž๋Š” ๋ฐฐ์—ด ํ•„๋“œ์— ์žˆ๋Š” ์š”์†Œ์˜ ๊ฐ’์ด๋‚˜ ์–‘์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ ์˜ˆ๋Š” vendor์— 'C'๊ฐ€ ํฌํ•จ๋œ ๋ฌธ์„œ์™€ ์ผ์น˜ํ•ฉ๋‹ˆ๋‹ค:

filter := bson.D{{"vendor", bson.D{{"$all", bson.A{"C"}}}}}
cursor, err := coll.Find(context.TODO(), filter)
if err != nil {
panic(err)
}
var results []Tea
if err = cursor.All(context.TODO(), &results); err != nil {
panic(err)
}
for _, result := range results {
res, _ := bson.MarshalExtJSON(result, false, false)
fmt.Println(string(res))
}
{"type":"Masala","rating":10,"vendor":["A","C"]}
{"type":"Oolong","rating":7,"vendor":["C"]}

๋ฐฐ์—ด ์—ฐ์‚ฐ์ž์˜ ์ „์ฒด ๋ชฉ๋ก์€ ๋ฐฐ์—ด ์ฟผ๋ฆฌ ์—ฐ์‚ฐ์ž ํŽ˜์ด์ง€๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

๋น„ํŠธ ์—ฐ์‚ฐ์ž๋Š” ์ˆซ์ž ํ•„๋“œ๋ฅผ ๋ฐ‘์ด 10์ง„์ˆ˜(์‹ญ์ง„๋ฒ•)์ธ ์ˆซ์ž์—์„œ ํ•ด๋‹นํ•˜๋Š” ๋ฐ‘์ด 2์ง„์ˆ˜(์ด์ง„๋ฒ•)์ธ ์ˆซ์ž๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ๋น„ํŠธ ์—ฐ์‚ฐ์ž๋Š” ๋ฌธ์„œ์˜ ๊ฐ’์ด ์‚ฌ์šฉ์ž์˜ ๋งค์น˜ ๊ธฐ์ค€์˜ ๊ฐ’๊ณผ ๋™์ผํ•œ ๋น„ํŠธ๋กœ ์„ค์ •๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ ์˜ˆ์‹œ๋Š” rating์— 6('00000110')๊ณผ ๋™์ผํ•œ ๋น„ํŠธ๊ฐ€ ์„ค์ •๋œ ๋ฌธ์„œ์™€ ์ผ์น˜ํ•ฉ๋‹ˆ๋‹ค.

filter := bson.D{{"rating", bson.D{{"$bitsAllSet", 6}}}}
cursor, err := coll.Find(context.TODO(), filter)
if err != nil {
panic(err)
}
var results []Tea
if err = cursor.All(context.TODO(), &results); err != nil {
panic(err)
}
for _, result := range results {
res, _ := bson.MarshalExtJSON(result, false, false)
fmt.Println(string(res))
}
{"type":"English Breakfast","rating":6}
{"type":"Oolong","rating":7,"vendor":["C"]}

๋น„ํŠธ ๋‹จ์œ„ ์—ฐ์‚ฐ์ž์˜ ์ „์ฒด ๋ชฉ๋ก์€ ๋น„ํŠธ ๋‹จ์œ„ ์ฟผ๋ฆฌ ์—ฐ์‚ฐ์ž ํŽ˜์ด์ง€๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

์ง€๋ฆฌ ๊ณต๊ฐ„์  ์ฟผ๋ฆฌ ์ง€์ •์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์ง€๋ฆฌ๊ณต๊ฐ„ ๋ฐ์ดํ„ฐ ๊ฐ€์ด๋“œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

์ด ๊ฐ€์ด๋“œ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๋ฉ”์„œ๋“œ ๋˜๋Š” ์œ ํ˜•์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์•Œ์•„๋ณด๋ ค๋ฉด ๋‹ค์Œ API ๋ฌธ์„œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

๋Œ์•„๊ฐ€๊ธฐ

์ฝ๊ธฐ