์ด์ง ํฌ๊ธฐ(์ง๊ณ)
์ ์
$binarySize
์ง์ ๋ ๋ฌธ์์ด ๋๋ ๋ฐ์ด๋๋ฆฌ ๋ฐ์ดํฐ ๊ฐ์ ์ฝํ ์ธ ํฌ๊ธฐ๋ฅผ ๋ฐ์ดํธ ๋จ์๋ก ๋ฐํํฉ๋๋ค.
$binarySize
์ ๊ตฌ๋ฌธ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:{ $binarySize: <string or binData> } ์ธ์๋ ๋๋ ์ด์ง ๋ฐ์ดํฐ ๊ฐ์ผ๋ก ํด์๋๋ ํ ์ ํจํ ํํ์ ์ผ ์ ์์ต๋๋ค. string ํํ์์ ๋ํ ์์ธํ ๋ด์ฉ์ ํํ์ ์ฐ์ฐ์๋ฅผ ์ฐธ์กฐํ์ธ์.
ํ๋
$binarySize
์ ์ธ์๋ ๋ค์ ์ค ํ๋๋ก ํด์๋์ด์ผ ํฉ๋๋ค.
๋ฌธ์์ด,
์ด์ง ๋ฐ์ดํฐ ๊ฐ ๋๋
null.
์ธ์๊ฐ ๋ฌธ์์ด ๋๋ ์ด์ง ๋ฐ์ดํฐ ๊ฐ์ธ ๊ฒฝ์ฐ ํํ์์ ์ธ์์ ํฌ๊ธฐ๋ฅผ ๋ฐ์ดํธ ๋จ์๋ก ๋ฐํํฉ๋๋ค.
์ธ์๊ฐ null
์ด๋ฉด ํํ์์ null
์ ๋ฐํํฉ๋๋ค.
์ธ์๊ฐ ๋ค๋ฅธ ๋ฐ์ดํฐ ์ ํ์ผ๋ก ํ์ธ๋๋ฉด $binarySize
์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
๋ฌธ์์ด ํฌ๊ธฐ ๊ณ์ฐ
$binarySize
์ ์ธ์๊ฐ ๋ฌธ์์ด์ธ ๊ฒฝ์ฐ ์ฐ์ฐ์๋ ๊ฐ ๋ฌธ์๊ฐ 1~4๋ฐ์ดํธ๋ฅผ ์ฌ์ฉํ ์ ์๋ ๋ฌธ์์ด์์ UTF-8์ผ๋ก ์ธ์ฝ๋ฉ๋ ๋ฐ์ดํธ ์๋ฅผ ๊ณ์ฐํฉ๋๋ค.
์๋ฅผ ์์, US-ASCII ๋ฌธ์๋ 1๋ฐ์ดํธ๋ฅผ ์ฌ์ฉํ์ฌ ์ธ์ฝ๋ฉ๋ฉ๋๋ค. ๋ถ์ ๋ถํธ์ ์ถ๊ฐ ๋ผํด ์ํ๋ฒณ ๋ฌธ์(์์ด ์ํ๋ฒณ ์ด์ธ์ ๋ผํด ๋ฌธ์)๊ฐ ์๋ ๋ฌธ์๋ 2๋ฐ์ดํธ๋ฅผ ์ฌ์ฉํ์ฌ ์ธ์ฝ๋ฉ๋ฉ๋๋ค. ์ค๊ตญ์ด, ์ผ๋ณธ์ด ๋ฐ ํ๊ตญ์ด ๋ฌธ์์๋ ์ผ๋ฐ์ ์ผ๋ก 3๋ฐ์ดํธ๊ฐ ํ์ํ๊ณ , ๋ค๋ฅธ ์ ๋์ฝ๋ ํ๋ฉด(์ด๋ชจํฐ์ฝ, ์ํ ๊ธฐํธ ๋ฑ)์๋ 4๋ฐ์ดํธ๊ฐ ํ์ํฉ๋๋ค.
๋ค์ ์์๋ฅผ ๊ณ ๋ คํ์ญ์์ค.
์์ | ๊ฒฐ๊ณผ | ์ฐธ๊ณ ์ฌํญ | |
---|---|---|---|
|
| ๊ฐ ๋ฌธ์๋ 1๋ฐ์ดํธ๋ฅผ ์ฌ์ฉํ์ฌ ์ธ์ฝ๋ฉ๋ฉ๋๋ค. | |
|
| ๊ฐ ๋ฌธ์๋ 1๋ฐ์ดํธ๋ฅผ ์ฌ์ฉํ์ฌ ์ธ์ฝ๋ฉ๋ฉ๋๋ค. | |
|
| ๊ฐ ๋ฌธ์๋ 1๋ฐ์ดํธ๋ฅผ ์ฌ์ฉํ์ฌ ์ธ์ฝ๋ฉ๋ฉ๋๋ค. | |
|
|
| |
|
| ๋น ๋ฌธ์์ด์ 0์ ๋ฐํํฉ๋๋ค. | |
|
|
| |
|
| ๊ฐ ๋ฌธ์๋ 3๋ฐ์ดํธ๋ฅผ ์ฌ์ฉํ์ฌ ์ธ์ฝ๋ฉ๋ฉ๋๋ค. |
์์
mongosh
์์ ๋ค์ ๋ฌธ์๋ฅผ ์ฌ์ฉํ์ฌ images
๋ผ๋ ์ด๋ฆ์ ์ํ ์ปฌ๋ ์
์ ๋ง๋ญ๋๋ค.
db.images.insertMany([ { _id: 1, name: "cat.jpg", binary: new BinData(0, "OEJTfmD8twzaj/LPKLIVkA==")}, { _id: 2, name: "big_ben.jpg", binary: new BinData(0, "aGVsZmRqYWZqYmxhaGJsYXJnYWZkYXJlcTU1NDE1Z2FmZCBmZGFmZGE=")}, { _id: 3, name: "tea_set.jpg", binary: new BinData(0, "MyIRAFVEd2aImaq7zN3u/w==")}, { _id: 4, name: "concert.jpg", binary: new BinData(0, "TWFuIGlzIGRpc3Rpbmd1aXNoZWQsIG5vdCBvbmx5IGJ5IGhpcyByZWFzb24sIGJ1dCBieSB0aGlzIHNpbmd1bGFyIHBhc3Npb24gZnJvbSBvdGhlciBhbmltYWxzLCB3aGljaCBpcyBhIGx1c3Qgb2YgdGhlIG1pbmQsIHRoYXQgYnkgYSBwZXJzZXZlcmFuY2Ugb2YgZGVsaWdodCBpbiB0aGUgY29udGludWVkIGFuZCBpbmRlZmF0aWdhYmxlIGdlbmVyYXRpb24gb2Yga25vd2xlZGdlLCBleGNlZWRzIHRoZSBzaG9ydCB2ZWhlbWVuY2Ugb2YgYW55IGNhcm5hbCBwbGVhc3VyZS4=")}, { _id: 5, name: "empty.jpg", binary: new BinData(0, "") } ])
๋ค์ ์ ๊ทธ๋ฆฌ๊ฒ์ด์
projects
:
name
ํ๋imageSize
ํ๋(์ด ํ๋๋$binarySize
๋ฅผ ์ฌ์ฉํ์ฌ ๋ฌธ์์binary
ํ๋ ํฌ๊ธฐ๋ฅผ ๋ฐ์ดํธ ๋จ์๋ก ๋ฐํํจ)
db.images.aggregate([ { $project: { "name": "$name", "imageSize": { $binarySize: "$binary" } } } ])
์ด ์ฐ์ฐ์ ๋ค์๊ณผ ๊ฐ์ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํฉ๋๋ค.
{ "_id" : 1, "name" : "cat.jpg", "imageSize" : 16 } { "_id" : 2, "name" : "big_ben.jpg", "imageSize" : 41 } { "_id" : 3, "name" : "teaset.jpg", "imageSize" : 16 } { "_id" : 4, "name" : "concert.jpg", "imageSize" : 269 } { "_id" : 5, "name" : "empty.jpg", "imageSize" : 0 }
๊ฐ์ฅ ํฐ ๋ฐ์ด๋๋ฆฌ ๋ฐ์ดํฐ ์ฐพ๊ธฐ
๋ค์ ํ์ดํ๋ผ์ธ์ ๋ฐ์ด๋๋ฆฌ ๋ฐ์ดํฐ ํฌ๊ธฐ๊ฐ ๊ฐ์ฅ ํฐ ์ด๋ฏธ์ง๋ฅผ ๋ฐํํฉ๋๋ค.
db.images.aggregate([ // First Stage { $project: { name: "$name", imageSize: { $binarySize: "$binary" } } }, // Second Stage { $sort: { "imageSize" : -1 } }, // Third Stage { $limit: 1 } ])
- ์ฒซ ๋ฒ์งธ ๋จ๊ณ
ํ์ดํ๋ผ์ธ
projects
์ ์ฒซ ๋ฒ์งธ ๋จ๊ณ์ ๋๋ค.name
ํ๋imageSize
ํ๋(์ด ํ๋๋$binarySize
๋ฅผ ์ฌ์ฉํ์ฌ ๋ฌธ์์binary
ํ๋ ํฌ๊ธฐ๋ฅผ ๋ฐ์ดํธ ๋จ์๋ก ๋ฐํํจ)
์ด ๋จ๊ณ์์๋ ๋ค์ ๋ฌธ์๋ฅผ ๋ค์ ๋จ๊ณ๋ก ์ถ๋ ฅํฉ๋๋ค.
{ "_id" : 1, "name" : "cat.jpg", "imageSize" : 16 } { "_id" : 2, "name" : "big_ben.jpg", "imageSize" : 41 } { "_id" : 3, "name" : "teaset.jpg", "imageSize" : 16 } { "_id" : 4, "name" : "concert.jpg", "imageSize" : 269 } { "_id" : 5, "name" : "empty.jpg", "imageSize" : 0 } - ๋ ๋ฒ์งธ ๋จ๊ณ
๋ ๋ฒ์งธ ๋จ๊ณ์์๋ ๋ฌธ์๋ฅผ
imageSize
์ฉ ๋ด๋ฆผ์ฐจ์์ผ๋กsorts
์ฒ๋ฆฌํฉ๋๋ค.์ด ๋จ๊ณ์์๋ ๋ค์ ๋ฌธ์๋ฅผ ๋ค์ ๋จ๊ณ๋ก ์ถ๋ ฅํฉ๋๋ค.
{ "_id" : 4, "name" : "concert.jpg", "imageSize" : 269 } { "_id" : 2, "name" : "big_ben.jpg", "imageSize" : 41 } { "_id" : 1, "name" : "cat.jpg", "imageSize" : 16 } { "_id" : 3, "name" : "teaset.jpg", "imageSize" : 16 } { "_id" : 5, "name" : "empty.jpg", "imageSize" : 0 } - ์ธ ๋ฒ์งธ ๋จ๊ณ
์ธ ๋ฒ์งธ ๋จ๊ณ์์๋ ์ถ๋ ฅ ๋ฌธ์๋ฅผ
limits
์ฒ๋ฆฌํ์ฌ ์ ๋ ฌ ์์์์ ์ฒ์์ ๋ํ๋๋ ๋ฌธ์๋ง ๋ฐํํฉ๋๋ค.{ "_id" : 4, "name" : "concert.jpg", "imageSize" : 269 }