만약 MongoDB 데이터베이스에서 무작위로 아무 값이나 가져오려면 어떤 방법이 있을까요? 아래에서 한번 알아봅니다.


# MongoDB 컬렉션에서 랜덤한 값 가져오기

아래 방법은 가장 많이 사용되는 간단한 방법들입니다.

! skip() size를 랜덤하게 바꾸는 방법다양한 방법이 존재하나 그 중에서 가장 쉽고 편리한 방법이라 할 수 있습니다. 만약 아이템의 개수가 총 100개라면 skip()값을 랜덤하게 0부터 99까지 설정하면 매우 쉽게 가능합니다. 그럼 아래 예제를 봐주세요.

! MongoDB 데이터베이스 내용컬렉션 site에는 다음과 같이 총 3개의 값이 있다고 가정합니다. 우리는 여기서 랜덤한 값을 불러오려 합니다.

* DB명 : site
{
  id: 1,
  name: web
}
{
  id: 2,
  name: is
}
{
  id: 3,
  name: free
}

이제 위 데이터에서 랜덤한 값을 가져와볼까요?
totalCount = db.site.count();
skipsize = Math.floor(Math.random() * totalCount);
db.site.find().skip(skipsize).limit();

이처럼 난수를 발생한 후 이를 skip size에 적용할 수 있겠습니다. 그 외에 방법으로 allegate의 $random 키워드를 사용할 수도 있습니다.


! aggregate 연산자의 $sample 키워드를 사용하기
다른 방법으로 aggregate 연산자의 $sample 키워드를 사용하는 방법이며 size를 사용하여 개수를 설정 가능합니다.

db.collection.aggregate(
  { $sample: { size: 1 } }
)

또 다른 좋은 방법이 있다면 업데이트하겠습니다.