victor
товарищи, подскажите, пожалуйста: нужно ли проводить какие-либо манипцляции над данными бэкапа в виде bson, сделанными, в версии 4.0, перед тем как ресторить эти данные в 4.4?
victor
а то я вот попробовал обновиться с 4.0 до 4.2, и с 4.2 до 4.4 и получаю логах ошибку This version of MongoDB is too recent to start up on the existing data files. Try MongoDB 4.2 or earlier."} {"t":{"$date":"2021-06-15T13:53:53.651+00:00"},"s":"F", "c":"-", "id":23089, "ctx":"initandlisten","msg":"Fatal assertion","attr":{"msgid":4671205,"file":"src/mongo/db/storage/wiredtiger/wiredtiger_kv_engine.cpp","line":913}}
victor
Это апгрейд по бинам и старт на том же data path?
угу. причем такая ситуация на 2/4 шардах, на 2 других запустилось - ок. я даже не хочу в этом разбираться, просто подниму новый кластер сразу на 4.4. Хотел лишь убедиться, что с данными все будет хорошо
Андрей
setFeatureCompatibilityVersion — MongoDB Manual https://docs.mongodb.com/manual/reference/command/setFeatureCompatibilityVersion/
Андрей
Эту штуку нужно тискать при апгрейде по бинам.
victor
Товарищи, вопрос по шардингу: В документации сказано, что To shard a collection, connect to the mongos from the mongo shell and use the sh.shardCollection() method Вопрос вот в чем: сейчас бд не содержит коллекций, и я хочу сделать заресторить одну коллекцию - мне нужно а) создать пустую коллекцию, сделать ей shardCollection и запустить restore б) сделать restore коллекцию, create an index и после этого сделать shardCollection ?
victor
коллекция, что я хочу заресторить, она с не-шардированной монги
yopp
Можно и так и так. В случае с первым вариантом, можно нулевой чанк порезать на несколько частей и расбалансировать их по кластеру. В этом случае вставка будет происходить сразу параллельно на несколько шардов, плюс потом балансировщику нужно будет меньше работать чтоб после вставки равномерно распределить чанки
yopp
Обратите внимание что балансировка идёт не по объёму данных, а по количеству чанков
victor
Не подскажете, как быть с mongos> use beet switched to db beet mongos> db.dropDatabase() { "ok" : 0, "errmsg" : "timed out waiting for beet.pages", уж не знаю, почему но поиск в гугле выдает малополезную и не относящуюся к теме выборку, единственная подсказка - неработающий ответ от индуса :|
victor
извиняюсь, ложная тревога. видимо, таймаут был вызван внутренними процессами монги, потому как через 10 минут дропнулась безо всяких проблем
Anton
Всем привет! Подскажите, я правильно понимаю, что поиск по вхождению не работает в MongoDB с индексацией. Например слово "автомобиль" по запросу моби никогда не найдет?
victor
@dd_bb не подскажете, откуда такое прожорство у mongorestore? Восстанавливаю коллекции на mongos, я думал это должен был быть слабенький сервачок, чтобы только роутить запросы, а в итоге пришлось взять r5.large тип, чтобы заресторить коллекцию размером в 16гб
victor
Pavel
@dd_bb не подскажете, откуда такое прожорство у mongorestore? Восстанавливаю коллекции на mongos, я думал это должен был быть слабенький сервачок, чтобы только роутить запросы, а в итоге пришлось взять r5.large тип, чтобы заресторить коллекцию размером в 16гб
такое есть https://jira.mongodb.org/browse/TOOLS-2783 - это пофиксили недавно https://jira.mongodb.org/browse/TOOLS-2875 - это нет. актуально, если большие документы в дампе. пока что можно --batchSize использовать
victor
такое есть https://jira.mongodb.org/browse/TOOLS-2783 - это пофиксили недавно https://jira.mongodb.org/browse/TOOLS-2875 - это нет. актуально, если большие документы в дампе. пока что можно --batchSize использовать
может быть воркеров количество порезать? просто у меня впереди 130 гигабайтная коллекция и боюсь, она полночи будет ресториться
victor
с другой стороны, можно психануть и взять на время ресторейшена инстанс на 64 гб рам
victor
@pperekalov я сильно извиняюсь, но мозг сломался, сейчас ресторится та самая 130гб коллекция о которой я упоминал и вот что показывает memory consumption
Pavel
не понял вопрос)
Anton
Привет всем! Как лучше реализовать прослушивание новых документов в коллекции? Хватит ли встроенного .watch() для 10-60 док-ов/5минут Или есть какие-то другие решения помимо этого
Lev
https://mongoplayground.net/p/Vk7eqq12KAr Книжки с авторами с просмотрами и рейтингом Я нашел самые просматриваемые книжки по авторам. А как из этого результата найти топ 3 по рейгингу?
Lev
А как доступситься до полей, которых нет в группировке?
Lev
Как то найти по результатам пайплайна можно? Пайплайн в пайплайне?
Nick
А как доступситься до полей, которых нет в группировке?
В группировке надо эти поля вытащить, $first/$last
Lev
А... сначала отсортировать а потом группировать. И сортировка останется
Lev
Ну, наверное так https://mongoplayground.net/p/igpJLHFJKjB Это отлично, а как по этим идшникам найти в той же таблице данные?
Lev
... lookup?
Lev
Как изменить в пайплайне документ, чтобы после операции вместо документа был его поддокумент
Lev
Были шкафы с книгами, стали просто книги. unwind и что то еще
Lev
Вот что я хотел https://mongoplayground.net/p/zlosjeTlpwz Надеюсь это корректно
Kirusick
вопрос по монгусю и монге наверное в целом. есть такая схема foo { bar { fieldA { id } fieldB { id } fieldC { id } } } надо получить мне объекты из филда bar у которых id совпадает с введенным
lutik
Ребятки, подскажите пожалуйста как вытянуть отсюда $sum: 'products.price'
lutik
lutik
Это я схему в монге описал
lutik
Знаю что через aggregate и sum + toInt, но чёт не получается
lutik
Я знаю)))
lutik
Пасиба
yopp
https://docs.mongodb.com/manual/reference/operator/aggregation/reduce/
lutik
👊
lutik
Пасиб
lutik
Блин, все равно ничё не получилось
lutik
Вообщем я делаю match, что бы вытянуть нужную сущность, потом хочу через $sum пролететься по ней, но не получается, через reduce тож пробовал, не получилось
lutik
Не работает именно когда вешаю оператор $toInt, пишет, что не может конвертировать строку
Anton
Всем привет. У меня возникла проблема с деплоем express на heroku: не подключается никак mongoDB, кто-то сталкивался с этой проблемой ?
Nikita
Доброе утро. Не подскажите почему не ищет по _id, но ищет просто по id, хотя в базе именно _id. Вот строчка кода с рабочим вариантом: AggregationOperation match = match(where("id").is(id));
️lefrotite
Предположим у меня есть коллекция users, и мне хочется, чтобы если я добавил новое поле где-то у себя в коде, это новое поле появилось у всех объектов в users. В SQL базах это вроде называется моделями, когда у всех объектов одинаковые поля. Как можно такое сделать в mongoDB?
️lefrotite
Немного костыльно. У монго нет какого-то встроенного режима шаблонов, чтобы у всех объектов автоматически добавлялось новое поле?
Lev
Я агрегации не могу выполнить на unsolicitedResponseEntry даже двухминутный таймаут улетает
Lev
Такие размеры монга должна легко обрабатывать?
Viktar
да
victor
@ViktarC ты нам нужен, кажется
Vladimir
Ау, это что?
Vladimir
/spam
victor
блин, сорри
Nick
Такие размеры монга должна легко обрабатывать?
4кк не так много чтобы все померло, но если у вас там 500мб оперативы, то может просто походы за доками надиск долгие. Помониторьте что с нагрузкой под монгой И свеху вопрос о том что вообще запрос из себя представляет?
Lev
А как посмотреть за монгой, за нагрузкой
Nick
А как посмотреть за монгой, за нагрузкой
за нагрузкой - прсото как сервер себя чуствует, монга сама по себе только в логи медленные запросы может логировать
Viktar
А как посмотреть за монгой, за нагрузкой
Так же посмотрите explain на запросы. Подозреваю у вас нет нужных индексов
Lev
А что если я хочу просто поанализировать? И индексов нет
Владимир Т
Всем привет. Такой вопрос. Есть сервер с шардированой базой в 400гб, необходимо сделать ей реплику. Возможно на уровне файлов перенести ее копию для создания реплики не получится. Если я создам сервер с такой же конфигурацией и добавлю его как секондари, он отреплицируется полностью?
Владимир Т
монгодамп монгорестор занимают 3 недели
yopp
Да, возможно. При условии что все операции по копированию данных, вводу в кластер и синхронизации займут меньше времени чем имеющееся у вас окно репликации
yopp
А, пропустил что «перенести на уровне файлов не получится». В этом случае initial sync должен гарантированно уложиться в окно репликации
yopp
Replication Window это время между самой последней и самой ранней записями в оплоге