yopp
yopp
в любом хранилище можно создать условия при которых можно «потреять» данные
Артем
Главное правильно обрабатывать ошибки (сетевые например), которые могут возникать в транзакции. Но это логика приложения, монга тут уже не причем
Roman
Ну например мне надо поменять 3 документа и 2 поменяло а на последнем ошибка возникла. Монга сделает рол бэк в этом случае? Или данные бытые останутся?
yopp
yopp
без транзакции — нет
Сергей
Добрый вечер подскажите пожалуйста как увидеть пользователей
yopp
https://docs.mongodb.com/manual/core/transactions/
https://docs.mongodb.com/manual/core/write-operations-atomicity/
yopp
транзакции нужны только в случае, когда у вас есть зависимые обновления
yopp
по этому транзакции необходимо явно использовать
Roman
Нужно давать какието инструкции драйверу?
Артем
Ну в pymongo например при чтении/записи указывается дополнительный параметр session, в который передается объект, представляющий из себя сессию с запущенной транзакцией
Артем
Там еще важный момент, что если вы хотите использовать транзакции, то лучше обновиться до mongodb 4.2+, поскольку в предыдущих версиях стоит ограничение на 16mb по размеру изменений, которое можно сделать в одной транзакции
yopp
Это последнее предупреждение
yopp
yopp
yopp
и за месяц тоже
Roman
@dd_bb еще хотел спросить. Не было ли на практике проблем с транзакциями междокументыми
yopp
Зависит от задач. В монге нет управления блокировками и все конфликты в случае конкурентного обновления документов разрешаются через единственный commit с последующим abort всех остальных конфликтующий транзакций.
При специфических нагрузках это может вызывать нежелательные эффекты.
Плюс необходимо понимать гарантии durability которые даёт монга и в каких случаях они работают
Daniyar
ребята, в схеме есть какое-то поле, который был уникальным.. но потом удалил unique: true; и все равно если создаю новый док то он кидает ошибку duplicate key (хотя он уже не уникальный).. в чем может быть проблема?
Roman
Arthur
он нужен когда вы ищите не полное совпадение
Подскажите, почему...
User.update(
{},
{ $pull: { cards: { $elemMatch: { refId: crdRefId } } } }, { multi: true }, function (err, doc) {
if (err) throw err;
console.log(doc)
});
...делает cards пустым массивом
yopp
Daniyar
yopp
Anton
Добрый день!
Подскажите, пожалуйста, столкнулся с проблемой: на удаленном сервере выполнение запроса к базе занимает 10-20 секунд, база при этом находится в докере
локально запрос выполняется мгновенно, при этом набор данных в базах совершенно одинаковый
куда стоит копнуть?
kk
Anton
нет, потому что раз локально очень быстро отрабатывает, я решил, что дело не в запросе, а в окружении, настройках или чем-то еще
kk
Anton
да, создаются при запуске прилы, так что не перепутать)
Roman
Какие гарантии durability которые даёт монга и в каких случаях они работают?
Leonid
Делайте explain и смотрите где у вас задержка.
У меня была бага, что удаленный сервер имел версию на минор ниже и криво отрабатывал сортировку по индексу. Обновление помогло
Anton
Anton
yopp
4.1 это development branch
Leonid
интересно. я не знал
Leonid
4.0 8 -> 4.0.12
Roman
Привет!
Есть коллекция с документами вида
{
"atr":"val",
"array":[
{"child_atr":"chaild_val_1", "some":"some"},
{"child_atr":"chaild_val_2", "some":"some"}
]
}
Необходимо выполнить update документа. На вход атрибуты для дочерних атрибутов массива.
Таким образом, что необходимо или обновить дочерний элемент если найден по входящим параметрам, или добавить новый.
Есть ли какой-то секрет как совместить одновременно $push если arrayFilters не вернул индекс дочернего, и $set если arrayFilters нашел элемент в массиве?
yopp
Roman
Paul
Ребят вопрос: в каком случае стоит выбрать монго вместо майсиквел? И есть ли разница в сокрости или в чем ещё?
Nick
Ребят вопрос: в каком случае стоит выбрать монго вместо майсиквел? И есть ли разница в сокрости или в чем ещё?
Похоже пора гдето делать подборку ответов на такие вопросы. Сначала вы делаете анализ вашей задачи/проекта, выписваете критерии для БД, потом смотрите как каждая база поддерживает ваши требования, сложно/просто что выполнить из ваших хотелок. Расставляете баллы, суммируете, выбираете. Нанимаете людей со знаниями выбранной бд или учите сами. Через полгода запуска проекта делаете переоценку и решаете оставаться на выбранной бд или нет.
Paul
Paul
А в общем для каких проектов берут монго обычно?
Захар
Nick
Ну развн что если у вас лютая многомерная с кучей условий аналитика планируется на достатчно больших данных и при этом будут требовпния на время выполнения - в этом случае лучше монгу не брать)
Paul
yopp
https://play.db-ai.co научился работать с ключами без кавычек
Semeon
Для $bucket надо использовать $match? Или его заменяет groupBy?
Богдан
Подскажите, пожалуйста, работает ли кто тут на джаве?
Есть вопросы почему одна часть кода работает, а вторая, идентичная нет))))))))))
Богдан
Богдан
Богдан
код находится в одном месте
Захар
предлагаю избавиться от жавы
Богдан
Chechen
Захар
Богдан
Никто не может подсказать, почему так?)
Богдан
Нашел полуответ
Если сопоставитель еще не выполнял поиска или предыдущая операция поиска завершилась неудачей, генерируется исключение IllegalStateException.
Однако сопоставитель искал уже поиск😤
Nick
Богдан
Nick
Богдан
Nick
Без него матчер работает как попытка проверить на соответствие регулярке всего текста с помощью метода match(), а не какойто его части
Богдан
И зачем мне создавать отдельный объект паттерна, ещё и вызывать метод компилирования строки regex?
Nick
Это уже оффтоп и лучше переместиться в жвм чат
Nick
Nick
Тут я уже могу плавать
Богдан
Ну да ладно
Ответ найден, спасибо всем за участие и ответы)
Хорошего вечера и чистого кода)