2014-12-19 1 views
1

Я ищу способ выбора документа из MongoDB случайным образом, а затем исключить его из любого другого случайного выбора.Можно ли выбрать случайный документ один раз, а затем никогда больше?

Я знаком с методом .skip (someRandomNumber) .next() для случайного выбора. Но как исключить его из дальнейших выборов.

Сценарий представляет собой набор ситуаций, которые необходимо выбирать/загружать случайным образом, но не могут быть загружены более одного раза.

Любые идеи?

+0

Из верхней части моей головы и iirc 'findOne' всегда возвращает один и тот же документ только в соединении. –

ответ

1

Вы видели The Random Attribute подход? Идея состоит в том, чтобы присваивать каждому атрибуту «случайный атрибут». Затем в вашем приложении вы можете создать случайное число, запомните его (чтобы не использовать его в будущем) и выберите случайный документ из коллекции.

Другим подходом было бы выбрать случайный документ из коллекции, а затем пометить этот документ как уже выбранный (не выбирать его в будущем). Поэтому при запросе вы явно отфильтровываете документы, которые уже были выбраны ранее.

+0

Я не слышал о первом подходе. Но очень аккуратно. –

Смежные вопросы