$rand
์ด ํ์ด์ง์ ๋ด์ฉ
์ ์
[0, 1) ๊ฐ๊ฒฉ์ ์์ฌ ๋์ ๋ถ๋ ์์์ ์ซ์๋ฅผ ๋ฐํํฉ๋๋ค. 0 ํฌํจ, 1 ์ ์ธ.
๊ตฌ๋ฌธ
$rand
์ ๊ตฌ๋ฌธ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
{ $rand: {} }
์์
๋ฌด์์ ๋ฐ์ดํฐ ํฌ์ธํธ ์์ฑ
์ด ์น์ ์ ์๋ ์์ ๊ธฐ๋ถ๋ฅผ ๋ณด์ฌ์ค๋๋ค. ๋ค์ ์ปฌ๋ ์ ์๋ ๊ธฐ์ฆ์ ๋ชฉ๋ก์ด ํฌํจ๋์ด ์์ต๋๋ค.
db.donors.insertMany( [ { donorId: 1000, amount: 0, frequency: 1 }, { donorId: 1001, amount: 0, frequency: 2 }, { donorId: 1002, amount: 0, frequency: 1 }, { donorId: 1003, amount: 0, frequency: 2 }, { donorId: 1004, amount: 0, frequency: 1 } ] )
๋ค์ ์์์๋ donors
์ปฌ๋ ์
์ ๊ฐ ๋ฌธ์๋ฅผ ์์์ ๊ธฐ๋ถ ๊ธ์ก์ผ๋ก ์
๋ฐ์ดํธํฉ๋๋ค.
db.donors.updateMany( {}, [ { $set: { amount: { $floor: { $multiply: [ { $rand: {} }, 100 ] } } } } ] )
๋น ์ ๋ฐ์ดํธ ํํฐ๋ collection์ ๋ชจ๋ ๋ฌธ์์ ์ผ์นํฉ๋๋ค.
๊ฐ ๋ฌธ์์ ๋ํด $rand
๋ฅผ ์ฌ์ฉํ์ฌ 0 ์์ 1 ์ฌ์ด์ ๊ฐ์ ์์ฑํ ๋ค์ $multiply
๋ก ๊ฐ์ ํ์ฅํฉ๋๋ค.
$floor
์ฐ์ฐ์๋ ์์์ ๋ถ๋ถ์ ์ ๊ฑฐํ๋ฏ๋ก ์
๋ฐ์ดํธ๋ amount
๋ ์ ์ ๊ฐ์
๋๋ค.
collection์ ์ ๋ฐ์ดํธํ ํ ๋ฌธ์๋ ๋ค์๊ณผ ๊ฐ์ด ํ์๋ฉ๋๋ค.
{ "donorId" : 1000, "amount" : 2, "frequency" : 1 } { "donorId" : 1001, "amount" : 58, "frequency" : 2 } { "donorId" : 1002, "amount" : 27, "frequency" : 1 } { "donorId" : 1003, "amount" : 26, "frequency" : 2 } { "donorId" : 1004, "amount" : 42, "frequency" : 1 }
์ปฌ๋ ์ ์์ ์์ ํญ๋ชฉ ์ ํ
$rand
์ฐ์ฐ์๋ collection์์ ์์์ ๋ฌธ์๋ฅผ ์ ํํ๋ ๋ฐ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๋ค์๊ณผ ๊ฐ์ ์ ๊ถ์ ๊ธฐ๋ก collection์ด ์ฃผ์ด์ง๋๋ค.
db.voters.insertMany( [ { name: "Archibald", voterId: 4321, district: 3, registered: true }, { name: "Beckham", voterId: 4331, district: 3, registered: true }, { name: "Carolin", voterId: 5321, district: 4, registered: true }, { name: "Debarge", voterId: 4343, district: 3, registered: false }, { name: "Eckhard", voterId: 4161, district: 3, registered: false }, { name: "Faberge", voterId: 4300, district: 1, registered: true }, { name: "Grimwald", voterId: 4111, district: 3, registered: true }, { name: "Humphrey", voterId: 2021, district: 3, registered: true }, { name: "Idelfon", voterId: 1021, district: 4, registered: true }, { name: "Justo", voterId: 9891, district: 3, registered: false } ] )
๋ค์ ์ฟผ๋ฆฌ๋ 3 ์ ๊ฑฐ๊ตฌ ์ ๊ถ์ ์ฝ ์ ๋ฐ์ ๋ฌด์์๋ก ์กฐํํฉ๋๋ค.
db.voters.find( { district: 3, $expr: { $lt: [0.5, {$rand: {} } ] } }, { _id: 0, name: 1, registered: 1 } )
district
ํ๋์ ์ด๊ธฐ ์ผ์น๋ ์ ๊ถ์๊ฐ 3๊ตฌ์ญ ์ถ์ ์ธ ๋ฌธ์๋ฅผ ์ ํํฉ๋๋ค.
$expr
์ฐ์ฐ์๋ $rand
์ ์ฌ์ฉํ์ฌ find
์ฐ์ฐ์ ๋์ฑ ์ธ๋ถํํฉ๋๋ค. ๊ฐ ๋ฌธ์์ ๋ํด $rand
์ 0์์ 1 ์ฌ์ด์ ๊ฐ์ ์์ฑํฉ๋๋ค. ์๊ณ๊ฐ์ด 0.5
์ด๋ผ๋ ๊ฒ์ ์งํฉ์ ์๋ ๋ฌธ์์ ์ฝ ์ ๋ฐ์ ๋ํด ($lt)
๋ณด๋ค ์์ ๋น๊ต๊ฐ ์ฐธ์์ ์๋ฏธํฉ๋๋ค.
3 ์ ๊ฑฐ๊ตฌ์๋ 7๋ช ์ ์ ๊ถ์๊ฐ ์์ผ๋ฉฐ, ์ฝ๋๋ฅผ ์คํํ๋ฉด ๊ทธ ์ค ์ ๋ฐ ์ ๋๊ฐ ์ ํ๋ฉ๋๋ค.
{ "name" : "Beckham", "registered" : true } { "name" : "Eckhard", "registered" : false } { "name" : "Grimwald", "registered" : true } { "name" : "Humphrey", "registered" : true }