Как MongoDB заказывает свои документы в одной коллекции? [Дубликат]

В текущей версии EL 2.2 вы не можете вставлять EL-выражения и String-concatenate EL-переменные таким образом. Используйте , чтобы подготовить динамический ключ, прежде чем использовать его в другом выражении EL, просто вставив выражение EL в строку:



Альтернативой является просто использование library и name вместо генерации URL-адреса на основе данных с помощью #{resource} mapping:



Update: с EL 3.0 вы можете использовать оператор += для String- объединить EL-переменные, если вы действительно не можете использовать library/name по какой-либо причине.


16
задан Ionică Bizău 8 October 2015 в 14:44
поделиться

1 ответ

По соображениям производительности MongoDB никогда не разбивает документ на жесткий диск.

Когда вы начинаете с пустой коллекции и начинаете вставлять в нее документ после документа, mongoDB последовательно помещает их на диск.

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

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

Итог: Никогда не полагайтесь на документы, возвращаемые в порядке вставки. Когда вы заботитесь о заказе, всегда сортируйте результаты.

2
ответ дан Philipp 8 October 2015 в 14:44
поделиться
Другие вопросы по тегам:

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