$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 }