параметр last_modified менялся, только если были изменения в других полях? сейчас так сделал, что меняется всегда, потому что как минимум last_modified отличается при подготовке документа
ну так в апдейт методе и обновляй
извини, можешь подробнее? я пробую через replace_one
обычно на уровне приложения должно определять надо ли обновлять и если был вызов апдейта, то значит обновление всетаки фиксируется. На уровень монги это вынести можно, но очень запарно получится и медленно по производительности. Для этого надо в фильтр апдейта указать все поля, так чтобы если они совпадают, то ни один док не подходил под выборку. В таком случае обновляться будет только, если поля отличаются. Само собой это выборка по всем полям и индексов не неастроишь если полей много
Создаешь ты методом криейт, обновляешь методом апдейт, вот и в апдейт методе обновляй поле ласт модифайд.
а replace_one нельзя специфицировать? ПРоблема в том, что я обсчитываю пакетно - и на выходе пачка объектов, по каждому искать есть ли он базе или нет - показалось запарно. С одной стороны прекрасно подошел raplace_one с параметром upsert=True, с другой стороны хотелось бы монги подсказать, что если она делает именно replace, то чтобы обновляли бы и поле last_modified
мой кейс выше описал. не очень подходит такое решение
upsert=true и ваша хотелка несовместимы
но если у вас пакетка, то знаит вы можете нормальнго делать запросы на выборку для проверки факта было изменение или нет и быть уверенными что реплейс обновит только нужные доки. А то что не поменялось просто не закидывать в базу
но мне надо записывать документы, которые в пачке появились, а в базе ещё отсустствовали
тогда выборка из базы для првоерки наличия и есть ли изменения и потом уже сбор пачки
Обсуждают сегодня