Пн go БД - вновь созданные документы вставляются не по порядку - PullRequest
0 голосов
/ 05 мая 2020

Я использую mon goose для создания новой записи. Иногда новая запись находится не в конце всех существующих документов, а в середине в случайном месте.

Я что-то упустил? Это код вставки:

      app.post("/api/books", (req, res) => {
         console.log("POST ROUTE HIT!");
         console.log(req.body);
         db.Book
           .create(req.body)
           .then(dbModel => res.json(dbModel))
           .catch(err => res.status(422).json(err));
      });

У меня тоже есть маршрут удаления. Почему мои новые записи иногда вставляются в случайных местах, а иногда в конце?

1 Ответ

2 голосов
/ 05 мая 2020

Ваши вновь созданные документы вставляются во внутреннем порядке сортировки по умолчанию (или естественный порядок ). Поисковый запрос mongodb не всегда сортирует документы по умолчанию до тех пор, пока вы не пройдете сортировку. Он вернет записи из механизма хранения в естественном порядке

Как указано в docs :

Порядок результатов

Если вы не укажете метод sort () или не используете оператор $ near, MongoDB не гарантирует порядок результатов запроса.

Итак, если вы хотите просмотреть / получить все свои документы, отсортированные по _id / created, то вам нужно ввести это в запрос вручную.

db.getCollection('books').find({}).sort({"_id": -1})
...