В каком порядке .find() возвращает документы MongoDB?

Мне было интересно, существует ли какой-то определенный «порядок», в котором документы MongoDB возвращаются при таком запросе:

collection.find()

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

trainset = collection.find().limit(train_set_size)
testset = collection.find().skip(train_set_size).limit(test_set_size)

Таким образом, оба набора не будут иметь абсолютно никакого пересечения.

Есть предположения?

Спасибо!


person lennyklb    schedule 27.04.2015    source источник


Ответы (2)


Я думаю, что collection.find() вернется на основе id. В mongodb ObjectId основано на времени. Таким образом, должно быть LIFO (последний пришел первым). Таким образом, сортировка основана на time.

В вашем наборе не должно быть накладок

person itzMEonTV    schedule 27.04.2015

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

person Alex    schedule 27.04.2015