@MongoDBRussian

Страница 288 из 342
AstraSerg
15.08.2018
07:52:02
нет, не использутся никаких $, просто findOneAndUpdate({key:queriedKey}, {fullUpdatedObject})
Вообще, согласно https://docs.mongodb.com/manual/reference/method/db.collection.findOneAndUpdate/ второй агрумент - это документ, который должен содержать update operators (https://docs.mongodb.com/manual/reference/operator/update/)

m
15.08.2018
07:53:36
Вообще, согласно https://docs.mongodb.com/manual/reference/method/db.collection.findOneAndUpdate/ второй агрумент - это документ, который должен содержать update operators (https://docs.mongodb.com/manual/reference/operator/update/)
так вот я вижу, что они нужны, но по примерам не совсем понимаю, какой у них изначальный документ. Если я не знаю, какие поля обновятся, и сколько полей вообще придут, как мне это оформить?

Google
Nick
15.08.2018
07:54:35
а что мешает просто попробовать и для себя все разобрать?

m
15.08.2018
07:56:16
Пример: db.ttt.findOneAndUpdate({"_id" : ObjectId("5b4cae20159693e01341481a")}, {$set: {"nhn" : "avd_5", "field2": "values", ...}})
>{$set: {"nhn" : "avd_5", "field2": "values", ...}} Это должно руками прописаться? я просто не знаю, объект с каким набором полей придёт.

Я бы тут делал что-то типа Object.assign({},OriginalDocument, {updatedfieldX : update}), но не предоставляется возможность

AstraSerg
15.08.2018
08:02:35
Я бы тут делал что-то типа Object.assign({},OriginalDocument, {updatedfieldX : update}), но не предоставляется возможность
Не, вы не с той стороны смотрите :) Делайте так: ставьте полученный документ как value для $set. То есть: db.ttt.findOneAndUpdate(<filter doc>, {$set: <new doc>}

Такого не знаю. Не типичный случай какой-то... Попробуйте поискать и поднять web-интефейс какой-нибудь для монги.

AstraSerg
15.08.2018
08:04:48
Алексей
15.08.2018
12:29:40
господа как лучше монгу для стейджа в кубере собирать ? нашел хелм чарт но он делает полную фигню и в мемберы пихает ip вместо имен.

дальше выглядит будто надо руками

про http://k8smongodb.net/ знаю но ответа не нашёл.

yopp
15.08.2018
12:34:51
Алексей
15.08.2018
12:35:10
рукми я сделал. но это чот жопа :)

Google
yopp
15.08.2018
12:35:28
Шедулеры контейнеров не учитывают внутреннее состояние сервисов и творят ужасные вещи

Тебе что надо?

Алексей
15.08.2018
12:37:15
хочу не делать руками инит репликасета

может быть совета или слов типа "болт забей на хельм чарт иди и собирай инит контейнер"

Undefined
15.08.2018
12:37:43
Добрый день, занимаюсь индексацией и не совсем понимаю куда добавить её в коде сервера. Может есть у кого какие советы? Знаю, что можно в compass добавить, но вдруг придётся менять сервер бд и всё полетит, по этому хочется в коде Если у кого есть какие идеи - поделитесь

yopp
15.08.2018
12:38:46
хочу не делать руками инит репликасета
Какую проблему ты решаешь автоматизацией?

Алексей
15.08.2018
12:39:08
Какую проблему ты решаешь автоматизацией?
инсталл приложения на неизвестной инфраструктуре с поднятым кубером

в идеале хочу ворклоу в стиле helm inspect blablba vim valiues.yml helm install blabla

yopp
15.08.2018
12:40:00
инсталл приложения на неизвестной инфраструктуре с поднятым кубером
А откуда берётся «неизвестность» инфраструктуры, если это стейжжинг?

Алексей
15.08.2018
12:40:47
А откуда берётся «неизвестность» инфраструктуры, если это стейжжинг?
на продуктовой среде стартовать сервисы типа монги в контейнере глупость несустветная. но в режиме поиграть или подевелопить это самое оно

yopp
15.08.2018
12:41:37
Для поиграть mlaunch есть

Который может тебе развернуть кластер из десяти шардов за две минуты в одну команду :)

Алексей
15.08.2018
12:42:35
хм. не то.

монга не самоцель а кусочек инфры

в иделе надо по ссылке на дев задачку.

словом стейджинг я как бы подчеркиваю факт того что на данные в ней наплевать сразу

yopp
15.08.2018
12:44:00
в иделе надо по ссылке на дев задачку.
Если тебе ехать, а не шашечки: завести руками отдельную монгу и каждый стейдж/браня/билд приложение катать в свою базу на одном кластере. Если критически нужна изоляция: mlaunch внутри контейнера/виртуалки Если критически нужна оркестрация: придётся писать своё, но оно будет очень плохо работать

Алексей
15.08.2018
12:47:59
ясно спасибо за мнение.

yopp
15.08.2018
12:48:20
Я пару лет назад полгода пытался в ранчере это сделать.

Google
yopp
15.08.2018
12:48:56
Это ОЧЕНЬ СЛОЖНО. Не меньше пары человеколет

Алексей
15.08.2018
12:49:37
пока мне кажется что дя задачи будет достаточно инит контейнера.

опять же с учетом того что всё время жизни репликасета примерно 6 часов.

и данные можно дропнуть

yopp
15.08.2018
12:50:11
Зачем нужно каждый раз катать реплику?

Алексей
15.08.2018
12:50:29
что бы похоже было.

yopp
15.08.2018
12:50:31
Это требование стоит сотни тысяч долларов :)

Её можно поднять и не катать

Алексей
15.08.2018
12:50:43
вроде как бы для block требуется 3.6 и репликасет даже из одного хоста

yopp
15.08.2018
12:50:58
А базы дропать это вопрос часа работы

Сделать три кластера: stand, repset, 3x shard. И пусть разрабы в них развлекаются.

Алексей
15.08.2018
12:51:58
не. зачем. ci сам справится с поднятием и убиением.

yopp
15.08.2018
12:52:06
Не справится

yopp
15.08.2018
12:55:32
Под какой запрос вы хотите их индексировать?

yopp
15.08.2018
12:56:25
не. зачем. ci сам справится с поднятием и убиением.
Если коротко, то автоматический FT, в частности выборы, делают систему недетерминированной для внешнего наблюдателя.

Алексей
15.08.2018
12:56:51
чой то ? для выборов есть подкалдка в виде priority

yopp
15.08.2018
12:58:33
А чем тебе приоритет поможет?

Алексей
15.08.2018
13:00:33
хельмовый чарт сейчас поднимает куберовский стейтфул сет. для машины с именем mongodb-primary-0 при инициализации репликасета выставляется 5-ка. для слейвов 2-ка. детерминированность выборов обеспечена. imho

Google
yopp
15.08.2018
13:01:25
Ну запуль тогда пуллреквест в хельму

Если айпишники это твоя единственная с ней проблема :)

Но я бы ее стал тратить нервы, время и бабки на эту затею. Готовы кластер тупо дешевле и надёжнее. Плюс всегда можно по результатам билда/тестирования посмотреть что в базе. Отлаживать проще.

Алексей
15.08.2018
13:03:16
пока единственная да

парни с канала пр кубер говорят что в стейтфулсете ойпишники неизменны

yopp
15.08.2018
13:04:00
Ну тогда в чём проблема вообще?

Алексей
15.08.2018
13:04:21
в том что чарт не работает как надо и требует ручной иниципализации :)

Admin
ERROR: S client not available

Алексей
15.08.2018
13:04:34
но я уже понял что тут я не получу нужный ответ и отстал да :)

yopp
15.08.2018
13:04:49
А причём тут монга?

Алексей
15.08.2018
13:05:06
ну а вдруг тут есть люди с похожим кейсом..

yopp
15.08.2018
13:08:53
У вас уже итак в запросе есть точное совпадение по _id, индекс по второму полю ничего не даст

Undefined
15.08.2018
13:09:54
У вас уже итак в запросе есть точное совпадение по _id, индекс по второму полю ничего не даст
Согласен, но для будущего (если я правильно понял ментора) эта индексация ускорит скорость запроса при большом количестве данных

yopp
15.08.2018
13:10:01
Не ускорит

Undefined
15.08.2018
13:10:25
Не ускорит
Так или иначе не моя прихоть) Если есть идеи как сделать, буду рад выслушать

yopp
15.08.2018
13:13:25
Сделать compound index по _id и survey.user._id. https://docs.mongodb.com/manual/core/index-compound/#create-a-compound-index Потом сменить ментора. Этот индекс не будет использоваться, потому что у вас уже есть точный идентификатор документа: _id. Быстрее уже просто невозможно. Плюс предварительная оптимизации — неэффтивна. Вы никогда не угадаете где у вас будет бутылочное горлышко.

Undefined
15.08.2018
13:20:57
yopp
15.08.2018
13:26:29
Вам в группу по JavaScript

Google
Undefined
15.08.2018
13:28:06
Вам в группу по JavaScript
Хорошо, спрошу там Спасибо за помощь

Вам в группу по JavaScript
Если интересно на досуге подумать,то: Получается так, что когда я делаю compound index по _id и answers.user._id Какие бы я запросы не делал, он всё время кидает на индексирование по _id Со всем остальным работает на ура В чём проблема _id?

Вам в группу по JavaScript
И вообще, делая любой compound index по, например, 2ум полям, где одно _id - он всегда кидает индексирование на UNIQUE _id

yopp
15.08.2018
15:12:01
Compound index c префиксом по _id никогда не будет иметь смысла

_id это уже _уникальный_ индектификатор документа

Если в запросе есть точное совпадение по _id, базе данных остаётся только отдать вам документ.

Т.е. это запрос со 100% селективностью

Andrew
15.08.2018
17:07:33
Привет! Репликация master-slave, вырубаю мастер ноду, slave не становится primary. Что не так с конфигом? Как-то у меня всегда это без орбитра работало { "_id" : "db-mongo", "version" : 3, "protocolVersion" : NumberLong(1), "members" : [ { "_id" : 0, "host" : "192.168.0.1:27017", "arbiterOnly" : false, "buildIndexes" : true, "hidden" : false, "priority" : 2.0, "tags" : {}, "slaveDelay" : NumberLong(0), "votes" : 1 }, { "_id" : 1, "host" : "192.168.0.2:27017", "arbiterOnly" : false, "buildIndexes" : true, "hidden" : false, "priority" : 1.0, "tags" : {}, "slaveDelay" : NumberLong(0), "votes" : 1 } ], "settings" : { "chainingAllowed" : true, "heartbeatIntervalMillis" : 2000, "heartbeatTimeoutSecs" : 10, "electionTimeoutMillis" : 10000, "catchUpTimeoutMillis" : 60000, "getLastErrorModes" : {}, "getLastErrorDefaults" : { "w" : 1, "wtimeout" : 0 }, "replicaSetId" : ...) } }

Andrew
15.08.2018
17:47:41
Так три ноды нужно. В логах наверняка об этом написано.
Т.е. конфиг правильный, но есть конфликт. Вообще, часто использую репликацию из двух нод на неважных системах

Обычно работало

pplcf
15.08.2018
17:49:53
ну, это же даже логически не может работать

AstraSerg
15.08.2018
17:49:54
Обычно работало
А что в логах-то?

pplcf
15.08.2018
17:50:25
если умерла нода 1, то как нода 2 поймет, что умерла имено нода 1, а не она сама?

нужен минимум третий

Andrew
15.08.2018
17:51:04
Логически я понимаю, что три нужно. Но говорю о практике, где две ноды переключаются в случае чего) я же не придумал)))

Логи гляну сейчас

pplcf
15.08.2018
17:51:26
просто первая отваливалась на короткое время

когда подключалась снова мастером становилась вторая

Страница 288 из 342