Nick
Подскажи пожалуйста, в чем тогда проблема? Почему у меня загружен только 1 шард?
чтобы такого не было необходимо делать первичную разбивку на чанки и их раскидывать по шардам, но это имеет смысл если надо сразу заливать очень много данных, ели база новая, то смысла особого нет
Алексей
если это первичная заливка, то у вас один чанк и он лежит на какомто из шардов и в него и будет все вставляться. после вставки уже отработает сплит и перенос на другой шард соответствующих чанков
У меня сейчас для теста лежит там 100к документов Я их получаю, пробегаюсь в цикле и считаю некоторые новые значения для полей. После делаю список операций updateOne, и отправляю в bulkWrite
Алексей
100к скорее всего помещаются в один чанк и не требует доп шарда. Наливайте уже нормальное количество данных
А подскажи пожалуйста, где посмотреть как принудительно разбить на чанки заливаемые данные. Или может вообще уменьшить размер чанков для монги, так можно?
Misha
Привет всем Пробовал ли кто то использовать TypeORM с Mongo? Мне монгус не оч зашел, ищу что то другое. Если есть успешный опыт с чем то, буду рад услышать)
Nick
А подскажи пожалуйста, где посмотреть как принудительно разбить на чанки заливаемые данные. Или может вообще уменьшить размер чанков для монги, так можно?
изменение настроек для размера чанков описаны тут https://www.mongodb.com/docs/manual/tutorial/modify-chunk-size-in-sharded-cluster/#std-label-tutorial-modifying-range-size
S
Задеплоил монго дб на сервер, открыл порт и поставил самый базовый пароль. Вот тебе и результат 😂
Сотрудник 236
Что такое "самый базовый" пароль?
Сотрудник 236
Кастомный порт надо было
Yassine
Hello i want courses in pipelines mongoDb pdf
Yassine
Or videos
Сергей
Всем привет! Вопрос по ротации -Сервис держит старые файлы логов после ротации. Удалить можно если сервис рестартануть сервис(службу) Ротацию делаем скриптом PS :$mongoBin = $args[0] $пользователь = $аргументы[1] $пароль = $аргументы[2] $serverName = «localhost» пытаться { Write-Host “Переместить в расположение mongod: $mongoBin” Set-Location $mongoBin .\mongo $serverName/admin -u $user -p $password --eval “db.adminCommand( { logRotate : 1 } )” if (!$?) { “Ошибка при изменении файла журнала” Write-Host $Error[0] Exit 1 } #удалить файлы старше 7 дней $config = Get-ChildItem …\mongo*.cfg -Recurse $input = Get-Content $config $input | foreach-object {If ($_ -match '\Wpath: ') { $logPath = ($_ -split “path:”)[1].Trim() } } Get-Item "$logPath. " | Where-Object { if ($ .LastWriteTime -lt (Get-Date).AddDays(-7)) { Write-Host "удалить файл $ " Remove-Item $_.FullName } } } catch { Write-Host -Exception $_.Exception Write-Host POWERSHELLERROR Ошибка записи [строка]::Пусто Выход 1 }
Сергей
Как определили что держит?
зашли в папку с логами а они на месте- ребутаешь сервис -они удаляются
Сергей
в диспетчере задач
Сергей
монга активная когда то и руками не удалить
Сергей
и ротация не помогает-только ребут
Nick
зашли в папку с логами а они на месте- ребутаешь сервис -они удаляются
Команду в бд logRotate если вручную выполнить пересоздает?
Сергей
на сервере нет
Nick
на сервере нет
Что пишет в логе при этом?
Сергей
а вот в этом и проблема- знаний мало по монге) какие логи надо смотреть?)
Nick
а вот в этом и проблема- знаний мало по монге) какие логи надо смотреть?)
Логи самой монги, которые вы и пытаетесь ротировать
Сергей
Nick
на сервере нет
И очевидно надо начать сверять настройки на серверной бд и чем отличается от локального сетапа. В первую очередь конфиг файл и строку запуска сервиса на предмет наличия опции --logRotate
Сергей
Сергей
на винде пром сервакой не было, на линухах подобных проблем на встречалось
Похоже действительно дело в архитектуре- у нас винда
ILIA
Коллеги, подскажите пожалуйста, раскатили шардированную монгу, на шарды могу зайти , а на монгос пишет анавтарайзед, в чем может ыть проблема?
Алексей
Коллеги, подскажите пожалуйста, раскатили шардированную монгу, на шарды могу зайти , а на монгос пишет анавтарайзед, в чем может ыть проблема?
Не знаю правильно так или нет, но попробуй прописать в uri параметр directConnection У меня что-то похожее было давно, не помню что делал
Ξ
ребят, а апдейт нескольких документов в коллекции (с использованием пайплайна) атомарен вместе для всех документов или только для каждого конкретного (без транзакций если)? в доке есть пример с такой формулировкой, будто атомарен сразу для всех документов, но всегда казалось, что это не так, поэтому не уверен вот
Nick
ребят, а апдейт нескольких документов в коллекции (с использованием пайплайна) атомарен вместе для всех документов или только для каждого конкретного (без транзакций если)? в доке есть пример с такой формулировкой, будто атомарен сразу для всех документов, но всегда казалось, что это не так, поэтому не уверен вот
обычный апдейт без транзакции атомарен только для отдельного документа. Т.е. можно быть уверенным что пока выполнялся пайплайн самого апдейта исходный док не поменялся. Но это не относится к другим документам
Makar M.
Привет всем. db.xxxx.aggregate([ { $match: { 'request.route': { $in: [] }, $or: [ {'request.id': {$exists: true, $ne: null}}, {'request.offer_id': {$exists: true, $ne: null}} ] } }, { $project: { group_id: { $cond: { if: {$ne: ['$request.offer_id', null]}, then: '$request.offer_id', else: '$request.id' } }, dt: { $dateFromString: { dateString: '$dt' } } } }, { $match: { group_id: {$ne: null} } }, { $group: { _id: '$group_id', last_visit_datetime: {$max: '$dt'} } }, { $sort: {last_visit_datetime: -1} }, { $limit: 25 } ]) Подскажите пожалуйста, в чём может быть проблема, что $max не берёт последнюю дату?
Makar M.
А почему думаете что дата не последняя?
Т.к. последние записи от сегодняшнего числа
Makar M.
А оно выдаёт как последние от 29-го
Nick
Т.к. последние записи от сегодняшнего числа
Значит условие отсекает новые данные, проверяйте что поменялось в структуре
Makar M.
На вид с запросом всё окей?
Nick
На вид с запросом всё окей?
{$exists: true, $ne: null} вот это возможно работает не так как ожидается
Makar M.
Нашёл ошибку, дело было в: if: {$ne: ['$request.offer_id', null]},
Makar M.
Нужно было проверять на существование, а не на null
Val
Для обновления полей в сущности посоветуете использовать MongoTemplate или же MongoRepository? SpringData
Val
А mongoRepository что под капотом бзает?
В репе (JPA) нужно так: MyDocument myDocumentToUpdate = myDocumentRepository.findById(documentId); // fetching a document that you want to update the field myDocumentToUpdate.setMyField(myNewValue); // setting the new value to the field myField myDocumentRepository.save(myDocumentToUpdate); // saving (It basically updates the document) the updated document В темплейте вот так: Query query1 = new Query(Criteria.where("id").is("123")); Update update1 = new Update(); update1.set("available", false); mongoTemplate.updateFirst(query1, update1, Customer.class);
Vladimir
Подскажите кто сталкивался, есть несколько объектов в коллекции. У каждого объекта есть поле list содержащим массив объектов { date, amount }, можно ли как-то сгруппировать, например по _id: null, чтобы в результате группировки было одно поле all с массивом объектов {date, amount}, а не с массивом массивов без предварительного unwind: '$list'?
Vladimir
Посиотрите на $concatArrays
Он для группировки не подходит unknown group operator '$concatArrays', для replaceRoot да, а тут не хочет
Kirilll
Всем привет Поделитесь опытом кто как борется с долгими запросами в монге? алерты какие то, профилировщики, экспортеры отдельные
Yaroslav
Всем привет Поделитесь опытом кто как борется с долгими запросами в монге? алерты какие то, профилировщики, экспортеры отдельные
Профилирование запросов, выяснение где нужны, а где не нудный индексы. Сокращение запросов или замена в сторону аггерегации
Yaroslav
Короче спустя 3 года, наша монга привратилась в нормализованную бд....
Kirilll
тут скорее я про их мониторинг а-ля опрашивать currentOP op.secs_running > 600 и тп с анализом кривых запросов и индексов все понятно)
Yaroslav
По поводу алертов, подключили графану, чтобы визуализировать, там прям интересно и быстро находится
Yaroslav
У монго экспортера есть метрика на slow query? Может я плохо смотрел)
Не, такое мы делали через elk, врубали логирования в монго и потом смотрели в ёлке
S
Привет, я же правильно понимаю, что если у меня может быть match по полю a, b и по ним вместе, то мне необходимо все равно два индекса? { a: 1, b: 1} и { b: 1 }. И соответственно что тогда делать когда у меня таких полей 5 штук ? Нужно как-то по умному продумать дофига индексов, которые покроют все случаи?
Vladimir
Подскажите такой вопрос, в монге нет аналога хранимых процедур?
Vladimir
Столкнулся со следующим кейсом, есть aggregation, который отлично работает через клиента, но не парсится в приложении springboot, проблема возникает на уровне function в $accumulator
Vladimir
Что значит не парсится? Обновитесь
Отлаживаюсь, обернул function в кавычки, функции в одну строку, вроде ошибка ушла, но вот скорость выполнения очень разная
Nick
Отлаживаюсь, обернул function в кавычки, функции в одну строку, вроде ошибка ушла, но вот скорость выполнения очень разная
измерение скорости выполнения кроме как через explain не имеет смысла, т.к. вы измеряете наверняка работу своего кода и кода фреймфорка, а не скорость выполнение запроса
Vladimir
Еще момент заметил, некоторые числа при использовании accumulate: function воспринимаются, как строки или NaN, как с этим бороться лучше всего?
Vladimir
Лежит Decimal
Vladimir
Причем нет пустых значений, чтобы получить NaN
Nick
Лежит Decimal
вот сходите в базу и посмотрите что там реально лежит, видимо чтото гдето лежит нетандартное
Nick
Причем нет пустых значений, чтобы получить NaN
а тут могу только отослать к драйверу который используете, возможно там есть какието оговорки когда NaN может появиться, это должно помочь выяснить причину
Vladimir
Сейчас я отлаживаюсь в NoSQLBooster for MongoDB
Vladimir
Я не думаю что у них какой-то свой кастомный драйвер для подключения используется
Vladimir
Интересно js работает в монге