모든 문서를 가져 오지 않기 때문에 Array#shuffle
을 사용할 수 없습니다 (최대 20 개의 문서 만 가져올 수 있음). MongoMapper를 사용하여 MongoDB 데이터베이스에서 임의의 문서를 가져올 수 있습니까 (예 : MySQL에서 ORDER BY RAND()
사용)?MongoMapper를 사용하여 임의의 순서로 문서를 가져올 수 있습니까?
1
A
답변
3
ORDER BY RAND()
과 유사한 기술은 없습니다. 그리고 심지어 MySQL에서는 큰 테이블에서이를 피하는 것이 좋습니다.
그러나 몇 가지 일반적인 트릭을 적용 할 수 있습니다.
예를 들어 ID의 최소값과 최대 값을 알고 있으면 범위 내에서 임의의 값을 선택하고 다음 개체를 가져옵니다.
db.collection.find({_id: {$gte: random_id}}).limit(1);
20 회 반복한다.
또는 각 문서에 "임의"필드를 추가 할 수 있습니다 (그리고 매번 한 번씩 다시 불러 오기). 이렇게하면 각 쿼리마다 무작위로 결과를 얻지는 않지만 값이 쌉니다.
db.collection.find().sort({pseudo_random_field: 1}).limit(20)
// you can also skip some records here, but don't skip a lot.
0
스킵과 랜덤 클래스를 사용하십시오.
class Book {
include MongoMapper::Document
key :title
key :author
}
rand = Random.rand(0..(Book.count-1))
Book.skip(rand).first
관련 문제
- 1. 코어 데이터에서 임의의 문자열을 가져올 수 있습니까?
- 2. mongomapper를 사용하여 Array 필드에 요소를 포함한 문서를 찾으십니까?
- 3. 일반 XForm 문서를 Orbeon으로 가져올 수 있습니까?
- 4. 임의의 순서로 행을 반환
- 5. Postrges에서 임의의 쿼리 유형을 가져올 수 있습니까?
- 6. 레일을 사용하여 mongomapper를 구성하십시오.
- 7. 임의의 순서로 문자열 정렬
- 8. 임의의 순서로 다차원 배열
- 9. 임의의 순서로 cf9 orm entityload
- 10. 임의의 문서를 명령 줄을 사용하여 PDF로 변환
- 11. 임의의 순서로 XSD를 작성하는 방법
- 12. Solr - 임의의 순서로 모든 용어를 포함하는 결과
- 13. 레일즈와 MongoMapper를 가진 MongoDB
- 14. 임의의 순서로 모든 정규식 조건 일치
- 15. dll을 참조하는 새 프로젝트로 문서를 가져올 수 있습니까?
- 16. 긴 텍스트 문자열에서 임의의 "태그"를 자동으로 가져올 수 있습니까?
- 17. 임의의 반복자 (C++)에서 값 유형을 가져올 수 있습니까?
- 18. 임의의 컨텍스트에서 JNIEnv * 값을 가져올 수 없습니다.
- 19. 임의의 순서로 여러 패턴을 일치시키는 정규식
- 20. mobileme를 사용하여 문서를 동기화 할 수 있습니까?
- 21. antixml을 사용하여 xml 문서를 만들 수 있습니까?
- 22. 임의의 순서로 SQL 행 출력 정렬?
- 23. Groovy JsonBuilder : 임의의 순서로 직렬화되는 객체 속성
- 24. mongomapper를 사용하여 서버 runCommand geoNear를 실행하십시오.
- 25. SQL - 임의의 숫자 순서로 필드로 정렬
- 26. mongomapper를 오버라이드 has_many 연결
- 27. DataContext.CreateDatabase는 임의의 순서로 열을 가진 데이터베이스를 만듭니다.
- 28. 임의의 순서로 행을 선택하고 역순으로 처리하십시오.
- 29. PHP에서 임의의 순서로 여러 개의 인수 허용
- 30. JUnit 테스트를 임의의 순서로 실행하려면 어떻게해야합니까?