Почему $ search return получается в другом направлении, чем поиск? [Дубликат]

NullPointerException s - исключения, возникающие при попытке использовать ссылку, которая указывает на отсутствие местоположения в памяти (null), как если бы она ссылалась на объект. Вызов метода по нулевой ссылке или попытка получить доступ к полю нулевой ссылки вызовет функцию NullPointerException. Они наиболее распространены, но другие способы перечислены на странице NullPointerException javadoc.

Вероятно, самый быстрый пример кода, который я мог бы придумать для иллюстрации NullPointerException, be:

public class Example {

    public static void main(String[] args) {
        Object obj = null;
        obj.hashCode();
    }

}

В первой строке внутри main я явно устанавливаю ссылку Object obj равной null. Это означает, что у меня есть ссылка, но она не указывает на какой-либо объект. После этого я пытаюсь обработать ссылку так, как если бы она указывала на объект, вызывая метод на нем. Это приводит к NullPointerException, потому что нет кода для выполнения в местоположении, на которое указывает ссылка.

(Это техничность, но я думаю, что она упоминает: ссылка, которая указывает на null, равна 't то же, что и указатель C, указывающий на недопустимую ячейку памяти. Нулевой указатель буквально не указывает на в любом месте , который отличается от указаний на местоположение, которое оказывается недопустимым.)

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

2 ответа

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

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

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

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

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

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

78
ответ дан Stennie 20 August 2018 в 09:17
поделиться
  • 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 20 August 2018 в 09:17
поделиться
Другие вопросы по тегам:

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