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

параметр last_modified менялся, только если были изменения в других полях? сейчас так сделал, что меняется всегда, потому что как минимум last_modified отличается при подготовке документа

11 ответов

23 просмотра

ну так в апдейт методе и обновляй

Alexander- Автор вопроса
dnacd 🦜
ну так в апдейт методе и обновляй

извини, можешь подробнее? я пробую через replace_one

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

Alexander
извини, можешь подробнее? я пробую через replace_o...

Создаешь ты методом криейт, обновляешь методом апдейт, вот и в апдейт методе обновляй поле ласт модифайд.

Alexander- Автор вопроса
Nick
обычно на уровне приложения должно определять надо...

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

Alexander- Автор вопроса
dnacd 🦜
Создаешь ты методом криейт, обновляешь методом апд...

мой кейс выше описал. не очень подходит такое решение

Alexander
а replace_one нельзя специфицировать? ПРоблема в т...

но если у вас пакетка, то знаит вы можете нормальнго делать запросы на выборку для проверки факта было изменение или нет и быть уверенными что реплейс обновит только нужные доки. А то что не поменялось просто не закидывать в базу

Alexander- Автор вопроса
Nick
upsert=true и ваша хотелка несовместимы

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

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

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

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

Обсуждают сегодня

Это может быть все-таки не флудвейт? у меня ботфазер принимает изменения и отображает даже что они изменились, на видео видно что он прислал якобы уже измененное описание, н...
OVERLINK
13
всем привет помогите пожалуйста используя CDN (GCP) у игроков из вьетнама загружается конфиг (размер 999 bytes) загружается 5 и более минут н а других CDN сервисах такой пробл...
Andrew Krw.
1
Добрый день. Мне посоветовали обратиться к вам в чат за помощью. Ситуация описана на скрине. Как мне сказали, мне на бота навесили флудвейт. Есть ли возможность снять его ра...
OVERLINK
7
Просто по очереди выпиливаешь на ручной маппинг? По методу за раз
Andrii Kurdiumov
7
И? Все равно глазами проверять надо каждое поле
Andrii Kurdiumov
4
Ну есть у нас десяток компаний которым надо. Остальным то зачем?
Andrii Kurdiumov
4
Приветствую. А не подскажете какие ограничения есть на использования api метода setMyName ? Несколько раз сменил имя бота и получил бан на 2 месяца на смену имени.
Slick Slack
8
Всем привет! Взялся портировать модули на 18 версию, лезет _logger.log(log_level, 'no translation language detected, skipping translation %s', frame, stack_info=True) А чт...
Max Lit
3
что значит рваность? фргаментированость?? для лох эт нормальное состояние. там сжатие редкое явление
Mikhail Lomonosov
1
Привет, коллеги! Возникла задача ограничить максимальный размер вложений для определённых расширений, например, чтобы для изображений лимит был 10 МБ, а для видео — 100 МБ. Ог...
Andro
1
Карта сайта