Как я могу получить последовательные наборы строк, используя MongoDB? - PullRequest
1 голос
/ 02 декабря 2011

У меня есть коллекция MongoDB, которая называется «Вопросы» и содержит объекты JSON, которые выглядят следующим образом:

{
    "_id"      : "49902cde5162504500b45c2c", 
    "question" : "Who are you?",
    "category" : "Personal"
}

, и я пытаюсь выбрать какое-то количество, скажем 1000, этих вопросов одновременно.Как только я обработаю эти 1000 записей, я хочу перейти к выбору следующих 1000 записей и т. Д.

Существует ли простой способ выполнить такое действие с использованием MongoDB?Я новичок в этой технологии.Если нет, есть ли у кого-нибудь хороший способ сделать это по-другому?Я использую драйвер Java, если это имеет значение.

Спасибо,
Крис Коверт

Ответы [ 2 ]

3 голосов
/ 02 декабря 2011

Альтернативный подход заключается в следующем:

  1. Установить последний обработанный идентификатор = 0

  2. Выбрать из вопросов, где идентификатор> [последний обработанный идентификатор]упорядочить по пределу идентификатора 1000

  3. Обработать эти строки
  4. Установить последний обработанный идентификатор = [последний идентификатор обработан из текущих 1000 результатов]
  5. Перейти к шагу 2

Это будет более эффективно, чем выбрать все и пропустить () мимо набора результатов.

В качестве альтернативы можно добавить флаг «обработано» в свои записи, чтобы вы могли различить, какие записинужно обработать, а затем запрос, где обработано = 0.

1 голос
/ 02 декабря 2011

Вы должны быть в состоянии использовать skip()limit()) для этого, но будьте осторожны, так как это дорогой запрос.

Итак, если ваша коллекция называетсявопросы ", что-то вроде:

db.questions.find().limit(1000)
db.questions.find().skip(1000).limit(1000)

вернет первую 1000, а затем вторую 1000 вопросов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...