Гена
вопрос скорее в том, в каком порядке делать
Гена
я думаю что нужно пересоздать сначала с другим именем
а потом старый дропнуть
Гена
но мне кажется эффект будет такой же
Yaroslav
Если у вас кластер с репликами - вы можете индекс перестраивать на каждой ноде отдельно. Один и тот же индекс вы не создадите два раза (наскольно я помню)
Гена
то есть нет способа пересоздать индекс в нагруженной бд без того, чтоб кластер страдал?
Гена
а можно ссылочку, если не сложно
Yaroslav
https://docs.mongodb.com/manual/tutorial/build-indexes-on-replica-sets/
Nick
3.6.0
повод поискать баги по этой проблеме
Гена
Nick
Тарас
Nick
как создавалась коллекция?
Тарас
C# mongodb driver, с помощью него
Тарас
Nick
все упоминания про _id
Тарас
Nick
и выглядит так что у тебя коллекция кастомно создана с другим ключом
Nick
коллекцию пересоздать ест ьвозможность?
Тарас
Не думаю, оно думаю сразу пофиксит, но терять данньІе не вариант
Nick
ничего не мешает сдампить их
Nick
если есть возможность устроить даунтам, то стоит попробовать
Nick
ну и заодно обновиться
Тарас
Ну по сути только такое есть решение, еще думал монго обновить, но всеравно дамп надо пхд. Спасибо за помощь, буду пробовать
Anonymous
Nick
у Тараса проблема и там прикол в том что поле не _id
Тарас
Если я делаю дамп коллекции, затем дропаю её, потом импорт дампа все будет на своих местах? Для перестраховки
Nick
да
Nick
для уверенности можно сделать дамп и поиграться с восстановлением в другую временную коллекцию
Тарас
так и сделал, в другую бд восстановил, локальную
Тарас
Nick, я дропнул колекцию, импортировал дамповую, не хелпануло. потом сделал на этой коллекции Import Data, и оно починило. Но когда добавляю новый документ в коллекцию с ним такая же трабла :)
Тарас
Nick
а если вручную док вставлять через монгошел, а не из кода?
Max
приветствую. нубский вопрос - со стороны бека, использующего монгу с реплика сет указываются все ноды? т.е. если указывать только текущий мастер и он падает, то куда пойдёт бэк? а если все, то как бэк определяет, кто мастер? ну или поделитесь линком на ман, что-то не нашёл.
Max
поправьте меня - за это отвечает mongos, указываются все инстансы с ней, а она дальше разбирается кто мастер?
Yaroslav
Можете указать все ноды, можете один, дравйер и по одной ноде узнает про конфигурацию кластера. Если укажите один и он упадет, при запуске ваша программа не сможет узнать про кластер и не будет работать.
Так будет работать и без mongos, реплики сами со всем справятся.
Anonymous
Anonymous
Что делать
Anonymous
Вожу sh start.sh
Anonymous
Бот постоянно перезагружаеться
Anonymous
Есть кто помочь,?
Anonymous
Это вообще что за бот и как он относится к монге?
Андрей
Всем привет, помогите разобраться, почему начал стопаться mongodb сервер
Андрей
просто тупо выключается, потом стартую его и работает какоето время
Андрей
RapidCodeLab
так где логи mongodb то?
Андрей
А где они лежат?
Андрей
А где они лежат?
Там, где указано в конфиге или в сислог летят, наверное.
Андрей
RapidCodeLab
вот и смотри там, почему падает, молча он не может упасть
Vladimir
ObjectID это, емнип timestamp + random(), так что коллизии возможны только при одновременной вставке
yopp
ts + rand + counter
yopp
rand обычно дерайвят из pid и host-specific идентификаторов
yopp
так что в реальной жизни коллии возможны только если будет counter rollover, а это надо очень много oid в секунду генерировать
Андрей
yopp
Андрей
проверьте диск
Епти, логами с ноды покушало память кек(( спасибо за помощь!
yopp
ну или так :)
yopp
проще всего сделать ещё одно поле due_date, в котором заранее вычислять date + timeout, сделать по нему индекс и искать просто $gte due_date
Антон
Привет. Не подскажите какие еще есть варианты итерации по большой коллекции(20 млн документов), без skip() и без фокусов с айдишниками как здесь
https://stackoverflow.com/a/50267128
потому что айдишник у меня кастомный, а не objectId.
ну и чтобы это было быстрее, чем со skip
Антон
или может кто знает как еще можно перенести данные из коллекции А в коллекцию В только те документы, которых нет в коллекции В
Vladimir
Nick
Nick
можно просто переименовать колелкцию
Антон
Vladimir
если есть индекс, то не займет. А если нет сортировки, то порядок выдачи документов недетерминирован
Nick
а блин
Vladimir
Vladimir
тогда и скип не понадобится
Антон
Nick
тогда номрального способа особо не придумаешь в монге, проблемы кастрированного join.
Но для вашего случая можно сделать так:
в агрегации используя $out перенести доки в две коллекции с учетом фильтров и в одну накидать то что долнжо остаться, во вторую уже то что надо было скопировать. Потом старую коллекцию с грязными данными удалить и переимено новую в старую
Nick
както так
Антон
Nick