Найти - Пользователи
Полная версия: Код на сервере и локально работает по разному, выборка в mongodb идет не попорядку.
Начало » Python для экспертов » Код на сервере и локально работает по разному, выборка в mongodb идет не попорядку.
1
Jeck290
Есть ситуация, на удаленном сервере есть приложение в качестве базы данных стоит монга, удаленно подключаемся к порту монги и работаем с базой удаленно. Просблема вот в чем, скрипт достает из колекции монги по порядку секции

def find_main_all(self):
        return list(self.collection.find({'type': {"$in": [
            'section', 'chapter', 'general_notes_index', 'section_notes'
        ]}}))

по порядку из базы получаем выборку из документов, формируем, все хорошо. Проблемы начинаются когда заливаешь этот скрипт на сервер и запускаешь его то документы в выборке идут не попорядку из за этого скрипт перестает работать (( на локальном сервере все хорошо раьотает, почему так ? должно же все работать ! где ошибка помогите советом , может у кого были такие проблемы.
py.user.next
Jeck290
документы в выборке идут не попорядку
В базе данных, по-моему, нет порядка между строками (записями). Если ты на это полагаешься, это неправильно. (Надо иметь поле, определяющее порядок записи.)
Jeck290
Нет нет , в базе все идет по порялку в нужной структуру, на локалке же все работает

section
chapter
chapter
chapter
chapter
chapter
section
chapter
chapter
chapter
chapter
chapter
chapter
chapter
chapter
chapter
section
chapter
section
chapter

тоесть если берешь строку 1 то тогда нужно брать и работать со строками 2 без этого скрипт даже не начнет работу так как создает структуру и списков. Пробовал сортировку выставлять но тогда пропадает нужный порядок (((
Если пишу маленький скрипт для теста и запускаю его на сервере то структура выдачи не меняется ! а если пишешь выборку класом то порядок изменяется

сделал отдельную функцию, поместил ее в отдельный файл, возвращаю список. Импортировал все в главный скрипт, все работает как нужно, если переношу функцию из файла в главный файл и убираю импорты то все так же начинает неработать (((( что за дело не пойму, код же работает.
py.user.next
Jeck290
Нет нет , в базе все идет по порялку в нужной структуру
Вот про то и речь, что записи в базе идут в произвольном порядке. А упорядочивание записей делается по полю (числовому, например).

Jeck290
Если пишу маленький скрипт для теста и запускаю его на сервере то структура выдачи не меняется ! а если пишешь выборку класом то порядок изменяется
Потому что он выбирает оптимально, в зависимости от того, как хранятся записи. А порядок он не соблюдает, потому что его нет.

Хочешь упорядочить записи - добавь поле с номером и сортируй выборку по нему.
(Хотя всё это напоминает муть. База на то и база, что это - несвязанные друг сдругом записи.)

Тебе надо её перепроектировать, походу, в таблицу секций, где секции упорядочены по номерам и хранят адреса в таблице глав, которые тоже упорядочены. При этом остаётся вопрос с добавлением новой секции или главы. Возможно, ещё что-то там надо будет делать, чтобы не индексировать её каждый раз.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB