insertMany и набор реплик

У меня есть база данных MongoDB, состоящая из одного ОСНОВНОГО и одного ВТОРИЧНОГО экземпляра (набора реплик) на одном сервере. Когда я выполняю команду insertMany():

let docsArray = []
for(i = 0; i <= 7; i++){
   let docsArray.push(
       {something: i}
   );
}
await collection.insertMany(docsArray)

происходит что-то странное. Мой основной сервер сохраняет данные в правильном порядке (тот, который я указал), тогда как ВТОРИЧНЫЙ экземпляр сохраняет документы случайным образом. Я попытался вставить документы один за другим, создав сеанс и цикл:

for(i = 0; i <= 7; i++){
     let newDoc = something + i;
     await newDoc.save({session});
 } 

все равно дают тот же результат. Почему это? Может ли решение быть чем-то связанным с Write Concern? Заранее спасибо!!!


person Valeri Tonchev    schedule 28.05.2020    source источник


Ответы (1)


Документы в коллекциях MongoDB не упорядочены.

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

Чтобы получить документы в определенном порядке, запросите порядок в запрос.

person D. SM    schedule 28.05.2020