Mongodb paging без сортировки? [Дубликат]

В Java все находится в форме класса.

Если вы хотите использовать любой объект, тогда у вас есть две фазы:

  1. Объявить
  2. Инициализация

Пример:

  • Объявление: Object a;
  • Инициализация: a=new Object();

То же самое для концепции массива

  • Объявление: Item i[]=new Item[5];
  • Инициализация: i[0]=new Item();

Если вы не дают секцию инициализации, тогда возникает NullpointerException.

73
задан BonsaiOak 6 October 2014 в 17:52
поделиться

2 ответа

По определению сортировка по умолчанию не определена, а также порядок возврата документов. Если запрос отсутствует, он будет использовать естественный порядок . Результаты возвращаются в том порядке, в котором они найдены, что может совпадать с порядком вставки (но не гарантировано) или порядком используемого индекса.

Некоторые примеры, которые повлияют на хранение (естественный) порядок:

  • , если документы обновлены и не помещаются в их выделенное место, они будут перемещены
  • новые документы могут быть вставлены в имеющиеся промежутки, созданные удаленными или перемещенными документами

Если используется индекс, документы будут возвращены в том порядке, в котором они найдены. Если используется более одного индекса, то порядок зависит от внутреннего индекса, по которому индекс сначала идентифицировал документ во время процесса дедупликации.

Если вам нужен конкретный заказ, вы должны включить сортировку в свой запрос.

Исключение, указанное для естественного порядка с ограниченным набором , состоит в том, что документы не могут перемещаться и сохраняются в порядке размещения. Заказ является частью ограниченного набора, который гарантирует, что самые старые документы «возрастут» в первую очередь. Кроме того, документы не могут быть удалены или перемещены в сборнике (см. Использование и ограничения для получения дополнительной информации).

78
ответ дан Stennie 18 August 2018 в 20:30
поделиться
  • 1
    Это означает, что если я запустил ту же команду find: db.collection.find ({& quot; x & quot; y}). Skip (20000) .limit (1000) в два разных момента времени, я буду получать разные наборы результатов? Что произойдет, если между двумя командами не было записи? – saurabhj 22 July 2012 в 11:00
  • 2
    @saurabhj: Добавлены некоторые примеры, которые повлияют на естественный порядок. Если документы были перемещены / удалены, вы можете получить разные наборы результатов. Если вложенных документов / обновлений / удалений не было, вы должны получить тот же результат. Добавление индексов не влияет на расположение документов на диске. – Stennie 22 July 2012 в 11:33
  • 3
    Следует также добавить оговорку, что если вы используете репликацию , естественный порядок может варьироваться между членами набора реплик. – Stennie 22 July 2012 в 11:48

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

3
ответ дан Parvin Gasimzade 18 August 2018 в 20:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: