반응형
몽구스에서 랜덤 레코드를 찾는 방법
MongoDB에서 랜덤 레코드를 어떻게 찾을 수 있습니까?
StackOverflow에서 여러 개의 기사를 찾았지만 이해할 수 없었습니다.예를 들어 다음과 같습니다.
db.yourCollection.find().limit(-1).skip(yourRandomNumber).next()
코드로 어떻게 실행합니까?(수집은User
)
User.findOne(RANDOM PLAYER).then(result) {
console.log(result);
}
랜덤 레코드를 얻는 방법은 일치하는 모든 레코드를 쿼리하고 하나만 얻는 것입니다.이것이 무엇입니까?findOne()
지정된 기준 없이 수행합니다.
그런 다음 가능한 모든 일치 항목을 임의로 선택합니다.이 작업은 다음을 통해 수행됩니다.
가능한 항목이 몇 개 있는지 확인합니다.
count()
이것을 위한 모금에.참고로, 댓글에 언급된 바와 같이,count
버전 4에서는 더 이상 사용되지 않으며 대신 추정된 DocumentCount 또는 CountDocuments를 사용해야 합니다.다른 점은 무엇보다도 정밀도/메모리 사용에 있습니다.여기 그것에 대해 조금 논의하는 SO 포스트가 있습니다.우리 숫자 안에 난수를 생각해 보세요.
사용하다
skip()
원하는 일치 항목으로 "이동"하고 반환합니다.
다음은 SO 답변에서 수정된 내용입니다.
// Get the count of all users
User.count().exec(function (err, count) {
// Get a random entry
var random = Math.floor(Math.random() * count)
// Again query all users but only fetch one offset by our random #
User.findOne().skip(random).exec(
function (err, result) {
// Tada! random user
console.log(result)
})
})
mongoose를 사용하여 mongodb에서 임의 문서를 가져옵니다.
limitrecords=10;
function getRandomArbitrary(min, max) {
return Math.ceil(Math.random() * (max - min) + min);
}
var userschema = new Schema({
name: String
});
User = mongoose.model('User', userschema);
User.count({your_query},function(err,count){
var skipRecords = getRandomArbitrary(1, count-limitrecords);
query.skip(skipRecords); // Random Offset
query.exec(function(err,result){
console.log(result); // 10 random users
});
});
이것은 10개의 랜덤 레코드에 대한 예이며, 요구 사항에 따라 "제한 레코드"를 설정할 수 있습니다.
감사합니다!
언급URL : https://stackoverflow.com/questions/39277670/how-to-find-random-record-in-mongoose
반응형
'programing' 카테고리의 다른 글
16진수를 인쇄할 때 printf가 1바이트만 출력하지 않는 이유는 무엇입니까? (0) | 2023.07.19 |
---|---|
변수가 정의되었는지 확인하시겠습니까? (0) | 2023.07.19 |
Spring-Boot 다중 모듈 프로젝트 로드 속성 파일 (0) | 2023.07.14 |
예약된 Sql 키워드를 사용하여 명명된 테이블 열을 처리하는 방법 (0) | 2023.07.14 |
"self.x = x; self"를 피하려면 어떻게 해야 합니까?y = y; __init_의 self.z = z" 패턴? (0) | 2023.07.14 |