$out (์ง๊ณ)
์ ์
$out
์ง๊ณ ํ์ดํ๋ผ์ธ์์ ๋ฐํ๋ ๋ฌธ์๋ฅผ ๊ฐ์ ธ์์ ์ง์ ๋ ์ปฌ๋ ์ ์ ์๋๋ค. ์ถ๋ ฅ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ง์ ํ ์ ์์ต๋๋ค.
$out
๋จ๊ณ๋ ํ์ดํ๋ผ์ธ ์ ๋ง์ง๋ง ๋จ๊ณ ์ฌ์ผ ํฉ๋๋ค.$out
์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ๋ฉด ์ ๊ทธ๋ฆฌ๊ฒ์ด์ ํ๋ ์์ํฌ์์ ๋ชจ๋ ํฌ๊ธฐ์ ๊ฒฐ๊ณผ ์ธํธ๋ฅผ ๋ฐํํ ์ ์์ต๋๋ค.
๊ตฌ๋ฌธ
$out
๋จ๊ณ์ ๊ตฌ๋ฌธ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
$out
์ถ๋ ฅ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ถ๋ ฅ ์ปฌ๋ ์ ์ ์ง์ ํ๊ธฐ ์ํด ๋ฌธ์๋ฅผ ๊ฐ์ ธ์ฌ ์ ์์ต๋๋ค.{ $out: { db: "<output-db>", coll: "<output-collection>" } } ํ๋์ค๋ช์ถ๋ ฅ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ด๋ฆ์ ๋๋ค.
๋ณต์ ๋ณธ ์ธํธ ๋๋ ๋ ๋ฆฝํ ์ ๊ฒฝ์ฐ ์ถ๋ ฅ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์กด์ฌํ์ง ์์ผ๋ฉด
$out
๊ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ ์์ฑํฉ๋๋ค.์ค๋ฉ๋ ํด๋ฌ์คํฐ์ ๊ฒฝ์ฐ ์ง์ ๋ ์ถ๋ ฅ ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์ด๋ฏธ ์กด์ฌํด์ผ ํฉ๋๋ค.
์ถ๋ ฅ collection ์ด๋ฆ์ ๋๋ค.
$out
์ถ๋ ฅ collection๋ง ์ง์ ํ๋ ๋ฌธ์์ด์ ์ฌ์ฉํ ์ ์์ต๋๋ค(์ฆ, ๋์ผํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ collection์ผ๋ก ์ถ๋ ฅ).{ $out: "<output-collection>" } // Output collection is in the same database
์ค์
์ค๋๋ ์ปฌ๋ ์ ์ ์ถ๋ ฅ ์ปฌ๋ ์ ์ผ๋ก ์ง์ ํ ์ ์์ต๋๋ค. ํ์ดํ๋ผ์ธ์ ์ ๋ ฅ ์ปฌ๋ ์ ์ ์ค๋ฉํ ์ ์์ต๋๋ค. ์ค๋๋ ์ปฌ๋ ์ ์ผ๋ก ์ถ๋ ฅํ๋ ค๋ฉด
$merge
(MongoDB 4.2๋ถํฐ ์ฌ์ฉ ๊ฐ๋ฅ)๋ฅผ ์ฐธ์กฐํ์ธ์.$out
์ฐ์ฐ์๋ ๊ณ ์ ์ฌ์ด์ฆ ์ปฌ๋ ์ ์ ๊ฒฐ๊ณผ๋ฅผ ์ธ ์ ์์ต๋๋ค.Atlas Search ์ธ๋ฑ์ค๊ฐ ์๋ ์ปฌ๋ ์ ์ ์์ ํ๋ ๊ฒฝ์ฐ ๋จผ์ ๊ฒ์ ์ธ๋ฑ์ค๋ฅผ ์ญ์ ํ ํ ๋ค์ ๋ง๋ค์ด์ผ ํฉ๋๋ค. ๋์
$merge
์ฌ์ฉ์ ๊ณ ๋ คํด ๋ณด์ธ์.
์(๊ณผ) ๋น๊ตํ๊ธฐ $merge
๋ฒ์ 4.2 ์ $merge
๊ฐ ๋์
๋๋ฉด์, MongoDB๋ ์ง๊ณ ํ์ดํ๋ผ์ธ์ ๊ฒฐ๊ณผ๋ฅผ ์ปฌ๋ ์
์ ์ฐ๊ธฐ ์ํด $merge
๋ฐ $out
๋ ๋จ๊ณ๋ฅผ ์ ๊ณตํฉ๋๋ค. ๋ค์์ ๋ ๋จ๊ณ์ ๊ธฐ๋ฅ์ ์์ฝํ ๊ฒ์
๋๋ค.
|
| ||||||||||
|
| ||||||||||
|
| ||||||||||
|
| ||||||||||
|
|
๋์
$out ์ฝ๊ธฐ ์์ ์ด ์ธ์ปจ๋๋ฆฌ ๋ณต์ ๋ณธ ์ธํธ ๋ฉค๋ฒ์์ ์คํ
MongoDB ๋ถํฐ ํด๋ฌ์คํฐ์ 5.0 $out
๋ชจ๋ ๋
ธ๋์ featureCompatibilityVersion 5.0
์ด ์ด์์ผ๋ก ์ค์ ๋์ด ์๊ณ ์ฝ๊ธฐ ๊ธฐ๋ณธ ์ค์ ์ด ์ธ์ปจ๋๋ฆฌ๋ก ์ค์ ๋ ๊ฒฝ์ฐ ๋ณต์ ๋ณธ ์ธํธ ์ธ์ปจ๋๋ฆฌ ๋
ธ๋์์ ๋ฅผ ์คํํ ์ ์์ต๋๋ค.
$out
๋ฌธ์ ์ฝ๊ธฐ ์์
์ ์ธ์ปจ๋๋ฆฌ ๋
ธ๋์์ ๋ฐ์ํ์ง๋ง ์ฐ๊ธฐ ์์
์ ํ๋ผ์ด๋จธ๋ฆฌ ๋
ธ๋์์๋ง ๋ฐ์ํฉ๋๋ค.
๋ชจ๋ ๋๋ผ์ด๋ฒ ๋ฒ์ ์ด ๋ณต์ ๋ณธ ์ธํธ ์ธ์ปจ๋๋ฆฌ ๋
ธ๋์ ๋ํ $out
์์
๋์ ์ง์ ์ ์ง์ํ๋ ๊ฒ์ ์๋๋๋ค. ๋๋ผ์ด๋ฒ ์ค๋ช
์๋ฅผ ํ์ธํ์ฌ ๋๋ผ์ด๋ฒ๊ฐ ์ธ์ปจ๋๋ฆฌ์์ ์คํ ์ค์ธ $out
์ ๋ํ ์ง์์ ์ธ์ ์ถ๊ฐํ๋์ง ํ์ธํฉ๋๋ค.
์ collection ๋ง๋ค๊ธฐ
$out
์์
์ ์ปฌ๋ ์
์ด ์์ง ์กด์ฌํ์ง ์๋ ๊ฒฝ์ฐ ์ ์ปฌ๋ ์
์ ๋ง๋ญ๋๋ค.
์ง๊ณ๊ฐ ์๋ฃ๋ ๋๊น์ง collection์ ํ์๋์ง ์์ต๋๋ค. ์ง๊ณ์ด ์คํจํ๋ฉด MongoDB๋ collection์ ์์ฑํ์ง ์์ต๋๋ค.
๊ธฐ์กด collection ๊ต์ฒด
$out
์ฐ์ฐ์์ ์ง์ ํ ์ปฌ๋ ์
์ด ์ด๋ฏธ ์กด์ฌํ๋ ๊ฒฝ์ฐ, ์ ๊ทธ๋ฆฌ๊ฒ์ด์
์ด ์๋ฃ๋๋ฉด $out
๋จ๊ณ์์ ๊ธฐ์กด ์ปฌ๋ ์
์ ์ ๊ฒฐ๊ณผ ์ปฌ๋ ์
์ผ๋ก ์์์ ์ผ๋ก ๋์ฒดํฉ๋๋ค. ๊ตฌ์ฒด์ ์ผ๋ก $out
์ฐ์ฐ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์์ ์ปฌ๋ ์ ์ ์์ฑํฉ๋๋ค.
๊ธฐ์กด collection์ ์ธ๋ฑ์ค๋ฅผ ์์ collection์ผ๋ก ๋ณต์ฌํฉ๋๋ค.
์์ ์ปฌ๋ ์ ์ ๋ฌธ์๋ฅผ ์ฝ์ ํฉ๋๋ค.
dropTarget: true
์ ํจ๊ปrenameCollection
๋ช ๋ น์ ํธ์ถํด ์์ ์ปฌ๋ ์ ์ ์ด๋ฆ์ ๋์ ์ปฌ๋ ์ ์ผ๋ก ์ง์ ํฉ๋๋ค.
$out
์์
์ ์ด์ ์ปฌ๋ ์
์ ์๋ ์ธ๋ฑ์ค๋ฅผ ๋ณ๊ฒฝํ์ง ์์ต๋๋ค. ์ ๊ทธ๋ฆฌ๊ฒ์ด์
์ด ์คํจํ๋ฉด $out
์์
์ ๊ธฐ์กด ์ปฌ๋ ์
์ ๋ณ๊ฒฝํ์ง ์์ต๋๋ค.
์คํค๋ง ์ ํจ์ฑ ๊ฒ์ฌ ์ค๋ฅ
coll
์ปฌ๋ ์
์์ ์คํค๋ง ์ ํจ์ฑ ๊ฒ์ฌ๋ฅผ ์ฌ์ฉํ๊ณ validationAction
์ error
๋ก ์ค์ ํ ๊ฒฝ์ฐ $out
์ผ๋ก ์๋ชป๋ ๋ฌธ์๋ฅผ ์ฝ์
ํ๋ฉด ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค. $out
์์
์ ๊ธฐ์กด ์ปฌ๋ ์
์ ๋ณ๊ฒฝํ์ง ์์ผ๋ฉฐ ์ง๊ณ ํ์ดํ๋ผ์ธ์์ ๋ฐํ๋ ๋ฌธ์๋ coll
์ปฌ๋ ์
์ ์ถ๊ฐ๋์ง ์์ต๋๋ค.
์ธ๋ฑ์ค ์ ์ฝ
ํ์ดํ๋ผ์ธ์์ ์์ฑํ ๋ฌธ์๊ฐ ์๋ ์ถ๋ ฅ ์ปฌ๋ ์
์ _id
ํ๋์ ์๋ ๊ณ ์ ์ธ๋ฑ์ค๋ฅผ ๋น๋กฏํด ๊ทธ ์ด๋ค ๊ณ ์ ์ธ๋ฑ์ค๋ผ๋ ์๋ฐํ ๊ฒฝ์ฐ ํ์ดํ๋ผ์ธ์ด ์๋ฃ๋์ง ์์ต๋๋ค.
$out
์์
์ผ๋ก Atlas Search ์ธ๋ฑ์ค๊ฐ ์๋ ์ปฌ๋ ์
์ ์์ ํ๋ ๊ฒฝ์ฐ Atlas Search ์ธ๋ฑ์ค๋ฅผ ์ญ์ ํ๊ณ ๋ค์ ๋ง๋ค์ด์ผ ํฉ๋๋ค. ๋์ $merge
๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
majority
readConcern
$out
๋จ๊ณ๋ฅผ ํฌํจํ๋ "majority"
์ง๊ณ์ ๋ํด ์ฝ๊ธฐ ๊ณ ๋ ค ์์ค์ ์ง์ ํ ์ ์์ต๋๋ค.
๋ค์๊ณผ์ ์ํธ ์์ฉ mongodump
ํด๋ผ์ด์ธํธ๊ฐ ๋คํ ํ๋ก์ธ์ค ์ค์ ๋ฅผ ํฌํจํ๋ ์ง๊ณ ํ์ดํ๋ผ์ธ์ ์คํํ๋ฉด mongodump
--oplog
$out
๋ก ์์๋ ๋ ์คํจํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ mongodump --oplog
๋ฅผ ์ฐธ์กฐํ์ธ์.
์ ํ ์ฌํญ
์ ํ ์ฌํญ | ์ค๋ช
|
---|---|
์ง๊ณ ํ์ดํ๋ผ์ธ ๋ฅผ | |
| |
| |
|
|
|
|
|
|
์์
test
๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ๋ค์ ๋ฌธ์๋ฅผ ์ฌ์ฉํด ์ปฌ๋ ์
books
๋ฅผ ์์ฑํฉ๋๋ค.
db.getSiblingDB("test").books.insertMany([ { "_id" : 8751, "title" : "The Banquet", "author" : "Dante", "copies" : 2 }, { "_id" : 8752, "title" : "Divine Comedy", "author" : "Dante", "copies" : 1 }, { "_id" : 8645, "title" : "Eclogues", "author" : "Dante", "copies" : 2 }, { "_id" : 7000, "title" : "The Odyssey", "author" : "Homer", "copies" : 10 }, { "_id" : 7020, "title" : "Iliad", "author" : "Homer", "copies" : 10 } ])
test
๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์์ง ์กด์ฌํ์ง ์๋ ๊ฒฝ์ฐ, ์ฝ์
์์
์ ์ํํ๋ฉด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ books
์ปฌ๋ ์
์ด ์์ฑ๋ฉ๋๋ค.
๋์ผํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก ์ถ๋ ฅํ๊ธฐ
๋ค์ ์ง๊ณ ์์
์ test
๋ฐ์ดํฐ๋ฒ ์ด์ค์ books
collection์ ์๋ ๋ฐ์ดํฐ๋ฅผ ํผ๋ฒํ์ฌ ์ ๋ชฉ์ ์ ์๋ณ๋ก ๊ทธ๋ฃนํํ ๋ค์ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ test
๋ฐ์ดํฐ๋ฒ ์ด์ค์ authors
collection์ ์๋๋ค.
db.getSiblingDB("test").books.aggregate( [ { $group : { _id : "$author", books: { $push: "$title" } } }, { $out : "authors" } ] )
- ์ฒซ ๋ฒ์งธ ๋จ๊ณ (
$group
): $group
๋จ๊ณ๋authors
๋ฅผ ๊ธฐ์ค์ผ๋ก ๊ทธ๋ฃนํํ๊ณ$push
๋ฅผ ์ฌ์ฉํ์ฌ ์ ๋ชฉ์books
๋ฐฐ์ด ํ๋์ ์ถ๊ฐํฉ๋๋ค.{ "_id" : "Dante", "books" : [ "The Banquet", "Divine Comedy", "Eclogues" ] } { "_id" : "Homer", "books" : [ "The Odyssey", "Iliad" ] } - ๋ ๋ฒ์งธ ๋จ๊ณ (
$out
): $out
๋จ๊ณ๋test
๋ฐ์ดํฐ๋ฒ ์ด์ค์authors
์ปฌ๋ ์ ์ ๋ฌธ์๋ฅผ ์ถ๋ ฅํฉ๋๋ค.
์ถ๋ ฅ collection์ ๋ฌธ์๋ฅผ ๋ณด๋ ค๋ฉด ๋ค์ ์์ ์ ์คํํฉ๋๋ค.
db.getSiblingDB("test").authors.find()
์ปฌ๋ ์ ์๋ ๋ค์ ๋ฌธ์๊ฐ ํฌํจ๋์ด ์์ต๋๋ค.
{ "_id" : "Homer", "books" : [ "The Odyssey", "Iliad" ] } { "_id" : "Dante", "books" : [ "The Banquet", "Divine Comedy", "Eclogues" ] }
๋ค๋ฅธ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก ์ถ๋ ฅ
์ฐธ๊ณ
๋ณต์ ๋ณธ ์ธํธ ๋๋ ๋
๋ฆฝํ์ ๊ฒฝ์ฐ ์ถ๋ ฅ ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์์ผ๋ฉด $out
๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์์ฑํฉ๋๋ค.
์ค๋ฉ๋ ํด๋ฌ์คํฐ์ ๊ฒฝ์ฐ ์ง์ ๋ ์ถ๋ ฅ ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์ด๋ฏธ ์กด์ฌํด์ผ ํฉ๋๋ค.
$out
๋ ์ง๊ณ๊ฐ ์คํ๋๋ ์์น์ ๋ค๋ฅธ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ปฌ๋ ์
์ผ๋ก ์ถ๋ ฅํ ์ ์์ต๋๋ค.
๋ค์ ์ง๊ณ ์์
์ books
์ปฌ๋ ์
์ ๋ฐ์ดํฐ๋ฅผ ํผ๋ฒํ์ฌ ์ ๋ชฉ์ด ์์ฑ์๋ณ๋ก ๊ทธ๋ฃนํํ ๋ค์ reporting
๋ฐ์ดํฐ๋ฒ ์ด์ค์ authors
์ปฌ๋ ์
์ ๊ฒฐ๊ณผ๋ฅผ ์๋๋ค.
db.getSiblingDB("test").books.aggregate( [ { $group : { _id : "$author", books: { $push: "$title" } } }, { $out : { db: "reporting", coll: "authors" } } ] )
- ์ฒซ ๋ฒ์งธ ๋จ๊ณ (
$group
): $group
๋จ๊ณ๋authors
๋ฅผ ๊ธฐ์ค์ผ๋ก ๊ทธ๋ฃนํํ๊ณ$push
๋ฅผ ์ฌ์ฉํ์ฌ ์ ๋ชฉ์books
๋ฐฐ์ด ํ๋์ ์ถ๊ฐํฉ๋๋ค.{ "_id" : "Dante", "books" : [ "The Banquet", "Divine Comedy", "Eclogues" ] } { "_id" : "Homer", "books" : [ "The Odyssey", "Iliad" ] } - ๋ ๋ฒ์งธ ๋จ๊ณ (
$out
): $out
๋จ๊ณ๋reporting
๋ฐ์ดํฐ๋ฒ ์ด์ค์authors
์ปฌ๋ ์ ์ ๋ฌธ์๋ฅผ ์ถ๋ ฅํฉ๋๋ค.
์ถ๋ ฅ collection์ ๋ฌธ์๋ฅผ ๋ณด๋ ค๋ฉด ๋ค์ ์์ ์ ์คํํฉ๋๋ค.
db.getSiblingDB("reporting").authors.find()
์ปฌ๋ ์ ์๋ ๋ค์ ๋ฌธ์๊ฐ ํฌํจ๋์ด ์์ต๋๋ค.
{ "_id" : "Homer", "books" : [ "The Odyssey", "Iliad" ] } { "_id" : "Dante", "books" : [ "The Banquet", "Divine Comedy", "Eclogues" ] }