Igor
второй запрос выбирает документ где в массиве нету того, что нужно
Igor
и добавляет =)
Igor
у меня тут blid+project уникальный индекс
Igor
короче я решил сейчас это
Igor
но это костыль
Igor
прям костылище
Igor
но хотя бы атомарно
Igor
то есть не страшно если в несколько потоков это делать - не будет дубликатов создаваться
Igor
но все равно на вид - через жопу
Igor
вот
ravia
Подскажите, что то я запутался уже Не могу стартануть mongos Для mongos нужен собственный процесс и файл конфигурации или он использует mongod ? Если mongod то что должно быть в конифге?
Alex
Доброе утро! Коллеги, подскажите пожалуйста (недавно работаю с монгой), когда делаю $lookup в аггрегации, то результат в as приходит массивом. Если я точно знаю что у меня результат всегда единичный, можно ли указать в опциях чтобы там сразу был искомый документ, без упакования в массив?
Igor
Тогда будет пустой update и мне нужно будет его ещё раз апдейтить в случае создания
Igor
Спасибо за идею
Igor
Возможно стоит забить на мой подход
Igor
Подумаю
Viktar
о, спасибо!
Если массив будет из нескольких элементов, будут дубликаты
Alex
Если массив будет из нескольких элементов, будут дубликаты
там поиск по уникальному id, не должно по идее
Anonymous
привет, в монге есть автоудаление записей, которые не юзались некоторое время?
Anonymous
или эту фичу самому писать надо
Andrey
https://docs.mongodb.com/manual/tutorial/expire-data/
Anonymous
спасиб
Александр
Добрый день. Подскажите пожалуйста, как делать бекапы бд (монги) на локальном сервере каждый день ?
ravia
Вчера читал, так что ищи
Александр
Вчера читал, так что ищи
Спасибо за ответ
Dany
Подскажите плис, возникла проблема с подключением к реплике Есть 2 отдельных прокси с нодами реплики Есть лоад беленсер на амазоне, на котором листенер перенаправляет на эти прокси В конекшне для каждой ноды указываем хост лб:порт Клиент страстно хочет подключаться через Robo3T, который не принимает имена хостнеймов, отличные от тех, которые указаны в нодах. Хотя такой же конекшн стринг тот же самый Compass принимает на ура. Что можно придумать в этом случае?
ravia
mongos самостоятельный сервис
А есть пример рабочего конфига?
||||||||
Добрый день! Я меняю каждый record в collection и обратно сохряняю в дб. Каждое сохранение занимает 0.5с. Не понял почему так долго. Есть ли какие то методы монгуса чтобы сразу же обновить весь collection (наверно так быстрее будет) ?
||||||||
Посмотрите updateMany
спасибо! но я уже прочитал про нее и понял что данный метод мне не подойдет( Было бы круто если есть такой метод, который перенапишет весь collection, условно User.rewrite(users)
Nick
спасибо! но я уже прочитал про нее и понял что данный метод мне не подойдет( Было бы круто если есть такой метод, который перенапишет весь collection, условно User.rewrite(users)
просто сделайте это без ожидания ответа перед следующей интерацией и станет быстро. Условно говоря генерьте промисы и пусть они когданить выполнятся
Nick
или под массивом понимается коллекция?
Igor
попробую но были дубликаты
Igor
массив объектов в поле
Igor
я мог где-то накосячить потому что не так давно с монгой знаком
Andrey
$addToSet https://docs.mongodb.com/manual/reference/operator/update/addToSet/
есть ли способ спрогнозировать - сколько займет времени такое "обновление" коллекции, если условно в коллекции уже 100млн записей, и на вход приходит 100 млн, из которых 80 млн - в итоге обновится?
Igor
погоди addtoset это про массив
Igor
монга не даст насовать 100М в массив
Nick
есть ли способ спрогнозировать - сколько займет времени такое "обновление" коллекции, если условно в коллекции уже 100млн записей, и на вход приходит 100 млн, из которых 80 млн - в итоге обновится?
провести нагрузочное и примерно понять как оно на вашем железе в вашем окружении будет работать. В общем случае обновление требует запись на диск, поэтому обновление 80% данных приведет к физической перезаписи этих данных, а это трафик+io нагрузка на диски и сколько они у вас позволят сделать зависит от вашего конфига
Igor
и оно однопоточное в монге
Nick
и оно однопоточное в монге
не совсем, само обнолвение дока будет выполнено в одном потоке, глобально многопоточно
Igor
больше чем 10к в сек даже на маленьких доках имхо очень вряд ли
yopp
Доброе утро! Коллеги, подскажите пожалуйста (недавно работаю с монгой), когда делаю $lookup в аггрегации, то результат в as приходит массивом. Если я точно знаю что у меня результат всегда единичный, можно ли указать в опциях чтобы там сразу был искомый документ, без упакования в массив?
Вы можете сделать $addFields/$project с $first. https://docs.mongodb.com/manual/reference/operator/aggregation/first-array-element/ $unwind менее предпочтителен в этом случае, так как он предназначен для «разворачивания» вложенных массивов в «плоскую» структуру
yopp
Подскажите, что то я запутался уже Не могу стартануть mongos Для mongos нужен собственный процесс и файл конфигурации или он использует mongod ? Если mongod то что должно быть в конифге?
mongos это отдельный исполняемый файл, пример конфигурации можно взять из плейбука по разворачиванию шарда https://docs.mongodb.com/manual/tutorial/deploy-shard-cluster/#start-a-mongos-for-the-sharded-cluster
Igor
у меня странный вопрос. я не могу авторизоваться. Под админом захожу, под созданным юзером нет
Igor
я что-то поменял но не врубаюсь где
Igor
под админом проверил пароль и сменил даже на юзера
Igor
но не могу зайти
Igor
это как такое может быть?
Igor
Подскажите, какое сообщение об ошибке вы получаете?
спасибо. я там все сильно поменял, я потом еще буду ломать и спрошу еще раз с новым кодом
yopp
Добрый день. Подскажите пожалуйста, как делать бекапы бд (монги) на локальном сервере каждый день ?
Вы можете выбрать один из доступных методов: https://docs.mongodb.com/manual/core/backups/. Если данных не много, то mongodump самый простой
yopp
Вчера читал, так что ищи
В нашем сообществе не принято отправлять искать. Если вы знаете где найти нужную информацию, пожалуйста, дайте прямую ссылку.
Anonymous
Ребята всем привет! начали использовать монгу, какой метод бекапа используете вы у себя на бою? и еще пока что у нас standalone сервер,но в будущем думаю будет replica set или вообще sharded cluster, и насколько ли бекап техники монги завязаны на топологию кластера? заранее всем большое спасибо за ответ
Anonymous
Упс, сорри вижу сверху задали, но тут вопрос с уточнением а у себя что каждый юзает? Мож какие нить утилитки есть сторонние...
yopp
спасибо! но я уже прочитал про нее и понял что данный метод мне не подойдет( Было бы круто если есть такой метод, который перенапишет весь collection, условно User.rewrite(users)
Зависит от стратегии обновления. Если у вас задача синхронизации с внешним источником, то в большинстве случаев самый быстрый способ — импортировать всю выгрузку целиком, не перезаписывая существующие документы. В зависимости от требований, это можно сделать или импортируя данные в новую коллецию с последующим переименованием (https://docs.mongodb.com/manual/reference/command/renameCollection/#mongodb-dbcommand-dbcmd.renameCollection) Или добавлением к документу поля с идентификатором выгрузки, например датой, плюс отдельным документом из которого брать актуальное значение этого поля. В последующем все запросы к этой коллекции должны будут использовать это поле в выборках. У этих двух подходов если свои плюсы и минусы.
Andrey
монга не даст насовать 100М в массив
речь идет о том, что есть документ условно, {_id:id, name:name, field_array:[1,2, 3..]}, таких 100 млн, приходит сверху 100 млн, у тех что _id совпадают, надо добавить в field_array значение из новой записи, а если такое _id отсутствует, то создать новый документ
yopp
речь идет о том, что есть документ условно, {_id:id, name:name, field_array:[1,2, 3..]}, таких 100 млн, приходит сверху 100 млн, у тех что _id совпадают, надо добавить в field_array значение из новой записи, а если такое _id отсутствует, то создать новый документ
В зависимости от того, что вам более критично: скорость вставки или скорость выборки, вы можете выбрать одну из двух стратегий: 1) вместо обновления создавать новый документ. Но вы платите за это хранением копий данных, как следствие увеличеним размера индексов и замедление выборки 2) обновлять доркументы. В этом случае вы платите скоростью вставки, так как по сути делаете де-дупликацию при записи. Вы с этим уже столкнулись
Oleg
кто может подсказать, поч то что работает в mongodb compasы не работает в коде?
Oleg
Andrey
В зависимости от того, что вам более критично: скорость вставки или скорость выборки, вы можете выбрать одну из двух стратегий: 1) вместо обновления создавать новый документ. Но вы платите за это хранением копий данных, как следствие увеличеним размера индексов и замедление выборки 2) обновлять доркументы. В этом случае вы платите скоростью вставки, так как по сути делаете де-дупликацию при записи. Вы с этим уже столкнулись
Да, вы правы, я думал о создании новых документов(коллекций) при поступлении новых данных, но тогда плата за хранение - очень большая, пока делаю вставку обновление документа через mongoimport ...... -mode=merge --upsertFields=_id --parseGrace=skipRow --writeConcern '{w: 0, j: false}' --bypassDocumentValidation, но вставка на коллекцию в 4.5 млрд новых 300 млн, на standalone идет 26 часов. Поступление новых данных 1 раз в 8 дней, потому терпимо(про 26 часов)
yopp
Да, стратегия зависит от топологии. Сложнее всего с шардами: в шардированном окружении очень сложно привести весь кластер в «мгновенно консистентное» состояние
Если вы можете себе позволить read-only на какое-то время, то будет не так сложно. Такое состояние можно достичь остановив балансировку, записи и дождавшись окончания репликации по всем нодам, после чего сделать снепшот с бэкап нод.
Igor
это как такое может быть?
кавычка в конце значения переменной окружения прилипла к имени базы
Viktar
Подозреваю из за того, что level_1 массив