Артем
Спасибо
Nick
в общем случае подготавливаете js скрипт, а в батнике уже его скармливаете монгошелу с параметрами подклчюения к бд
Артем
Парни, если установлен mongoCompass, то можно через piweshell команды отправлять на удалённую бд?
Anonymous
подскажите, по дефолту findOneAndUpdate , если ему передать не весь новый объект, а только небольшую его часть, только замененные поля, то он не удалит старые поля, если на них не пришёл апдейт? Сейчас я просто передаю ему обновленный экземпляр документа целиком, И работает нормально, не хотелось бы сломать
AstraSerg
Вам для мониторинга или shell? Или вы про вызовы из приложения?
AstraSerg
Парни, если установлен mongoCompass, то можно через piweshell команды отправлять на удалённую бд?
Одно с другим не связано. В компасе вы можете работать с вашей БД. Из powershell вы можете подключиться к БД и выполнять любые команды.
AstraSerg
нет, не использутся никаких $, просто findOneAndUpdate({key:queriedKey}, {fullUpdatedObject})
Вообще, согласно https://docs.mongodb.com/manual/reference/method/db.collection.findOneAndUpdate/ второй агрумент - это документ, который должен содержать update operators (https://docs.mongodb.com/manual/reference/operator/update/)
Anonymous
Вообще, согласно https://docs.mongodb.com/manual/reference/method/db.collection.findOneAndUpdate/ второй агрумент - это документ, который должен содержать update operators (https://docs.mongodb.com/manual/reference/operator/update/)
так вот я вижу, что они нужны, но по примерам не совсем понимаю, какой у них изначальный документ. Если я не знаю, какие поля обновятся, и сколько полей вообще придут, как мне это оформить?
Nick
а что мешает просто попробовать и для себя все разобрать?
Anonymous
Пример: db.ttt.findOneAndUpdate({"_id" : ObjectId("5b4cae20159693e01341481a")}, {$set: {"nhn" : "avd_5", "field2": "values", ...}})
>{$set: {"nhn" : "avd_5", "field2": "values", ...}} Это должно руками прописаться? я просто не знаю, объект с каким набором полей придёт.
Anonymous
Я бы тут делал что-то типа Object.assign({},OriginalDocument, {updatedfieldX : update}), но не предоставляется возможность
AstraSerg
Я бы тут делал что-то типа Object.assign({},OriginalDocument, {updatedfieldX : update}), но не предоставляется возможность
Не, вы не с той стороны смотрите :) Делайте так: ставьте полученный документ как value для $set. То есть: db.ttt.findOneAndUpdate(<filter doc>, {$set: <new doc>}
AstraSerg
Такого не знаю. Не типичный случай какой-то... Попробуйте поискать и поднять web-интефейс какой-нибудь для монги.
Aleksey
господа как лучше монгу для стейджа в кубере собирать ? нашел хелм чарт но он делает полную фигню и в мемберы пихает ip вместо имен.
Aleksey
дальше выглядит будто надо руками
Aleksey
про http://k8smongodb.net/ знаю но ответа не нашёл.
Aleksey
рукми я сделал. но это чот жопа :)
yopp
Шедулеры контейнеров не учитывают внутреннее состояние сервисов и творят ужасные вещи
yopp
Тебе что надо?
Aleksey
хочу не делать руками инит репликасета
Aleksey
может быть совета или слов типа "болт забей на хельм чарт иди и собирай инит контейнер"
Mira
Добрый день, занимаюсь индексацией и не совсем понимаю куда добавить её в коде сервера. Может есть у кого какие советы? Знаю, что можно в compass добавить, но вдруг придётся менять сервер бд и всё полетит, по этому хочется в коде Если у кого есть какие идеи - поделитесь
yopp
хочу не делать руками инит репликасета
Какую проблему ты решаешь автоматизацией?
Aleksey
Какую проблему ты решаешь автоматизацией?
инсталл приложения на неизвестной инфраструктуре с поднятым кубером
Aleksey
в идеале хочу ворклоу в стиле helm inspect blablba vim valiues.yml helm install blabla
yopp
инсталл приложения на неизвестной инфраструктуре с поднятым кубером
А откуда берётся «неизвестность» инфраструктуры, если это стейжжинг?
Aleksey
А откуда берётся «неизвестность» инфраструктуры, если это стейжжинг?
на продуктовой среде стартовать сервисы типа монги в контейнере глупость несустветная. но в режиме поиграть или подевелопить это самое оно
yopp
Для поиграть mlaunch есть
yopp
Который может тебе развернуть кластер из десяти шардов за две минуты в одну команду :)
Aleksey
хм. не то.
Aleksey
монга не самоцель а кусочек инфры
Aleksey
в иделе надо по ссылке на дев задачку.
Aleksey
словом стейджинг я как бы подчеркиваю факт того что на данные в ней наплевать сразу
yopp
в иделе надо по ссылке на дев задачку.
Если тебе ехать, а не шашечки: завести руками отдельную монгу и каждый стейдж/браня/билд приложение катать в свою базу на одном кластере. Если критически нужна изоляция: mlaunch внутри контейнера/виртуалки Если критически нужна оркестрация: придётся писать своё, но оно будет очень плохо работать
Aleksey
ясно спасибо за мнение.
yopp
Я пару лет назад полгода пытался в ранчере это сделать.
yopp
Это ОЧЕНЬ СЛОЖНО. Не меньше пары человеколет
Aleksey
пока мне кажется что дя задачи будет достаточно инит контейнера.
Aleksey
опять же с учетом того что всё время жизни репликасета примерно 6 часов.
Aleksey
и данные можно дропнуть
yopp
Зачем нужно каждый раз катать реплику?
Aleksey
что бы похоже было.
yopp
Это требование стоит сотни тысяч долларов :)
yopp
Её можно поднять и не катать
Aleksey
вроде как бы для block требуется 3.6 и репликасет даже из одного хоста
yopp
А базы дропать это вопрос часа работы
yopp
Сделать три кластера: stand, repset, 3x shard. И пусть разрабы в них развлекаются.
Aleksey
не. зачем. ci сам справится с поднятием и убиением.
yopp
Не справится
yopp
Если кратко, то как связать эти 2 поля для индексации
Под какой запрос вы хотите их индексировать?
yopp
не. зачем. ci сам справится с поднятием и убиением.
Если коротко, то автоматический FT, в частности выборы, делают систему недетерминированной для внешнего наблюдателя.
Aleksey
чой то ? для выборов есть подкалдка в виде priority
yopp
А чем тебе приоритет поможет?
Aleksey
хельмовый чарт сейчас поднимает куберовский стейтфул сет. для машины с именем mongodb-primary-0 при инициализации репликасета выставляется 5-ка. для слейвов 2-ка. детерминированность выборов обеспечена. imho
yopp
Ну запуль тогда пуллреквест в хельму
yopp
Если айпишники это твоя единственная с ней проблема :)
yopp
Но я бы ее стал тратить нервы, время и бабки на эту затею. Готовы кластер тупо дешевле и надёжнее. Плюс всегда можно по результатам билда/тестирования посмотреть что в базе. Отлаживать проще.
Aleksey
пока единственная да
Aleksey
парни с канала пр кубер говорят что в стейтфулсете ойпишники неизменны
yopp
Ну тогда в чём проблема вообще?
Aleksey
в том что чарт не работает как надо и требует ручной иниципализации :)
Aleksey
но я уже понял что тут я не получу нужный ответ и отстал да :)
yopp
А причём тут монга?
Aleksey
ну а вдруг тут есть люди с похожим кейсом..
yopp
У вас уже итак в запросе есть точное совпадение по _id, индекс по второму полю ничего не даст
Mira
У вас уже итак в запросе есть точное совпадение по _id, индекс по второму полю ничего не даст
Согласен, но для будущего (если я правильно понял ментора) эта индексация ускорит скорость запроса при большом количестве данных
yopp
Не ускорит
Mira
Не ускорит
Так или иначе не моя прихоть) Если есть идеи как сделать, буду рад выслушать
yopp
Сделать compound index по _id и survey.user._id. https://docs.mongodb.com/manual/core/index-compound/#create-a-compound-index Потом сменить ментора. Этот индекс не будет использоваться, потому что у вас уже есть точный идентификатор документа: _id. Быстрее уже просто невозможно. Плюс предварительная оптимизации — неэффтивна. Вы никогда не угадаете где у вас будет бутылочное горлышко.