Serhii
@dd_bb thx
yopp
и ниче, делюсь информацией
эта информация не релевантна
yopp
@dd_bb thx
если addToSet аргументом берёт не литерал, а структуру, структуры должны быть абсолютно одинаковыми, включая подрядок (т.е. bson представление должно побайтово совпадать)
Serhii
@dd_bb got it thx
yopp
интересно почему?
потому что это органичение не хранилища, а провайдера услуги
Ivan
я так и написал в своеем сообщеении
Ivan
что у mlab
yopp
разговор был не о mlab, о монге
Slava
про монгу чо только не говорят
вот я и хочу чтоб вокруг было по минимому мифов) что думаешь про утверждение "при >1000 коннектов на инстанс монге жутко плохо"?) или же тут вопрос в другом - что >1000 уже сама по себе не здоровая ситуация?
yopp
если человек изначально настроился нагативно по отношению к технологии, то никакая аргументация тут не поможет
Gor
Зависит думаю от агрегации порядка но во втором случае может срабатывать оптимизация точно, особенно если только индекс.
Gor
Explain сделай
Gor
И там и там, увидишь в чем разница
yopp
find.count может оптимизирвоать по covered query
yopp
мы тут помоему это уже обсуждали
Gor
Во втором случае наверняка что то веселое
Павел
Привет. Подскажите как отсортировать данные по полю обджекта, который лежит в аррее, и одно из полей этого обджекта проходит по условию.
Владислав
Друзья, есть проблема. операция findById к одной коллекции выполняется в 11-12 раз дольше, чем таже операция, но на другой коллекции с чем это может быть связано? куда смотреть для поиска решения?
yopp
explain
The first
В коллекции лежит всего 10 документов...
The first
Но операция выполняется 750 мс
Олег
подскажите, лимит документа как-то можно изменить? я про те 16Мб
Олег
другой вопрос как обойти ошибку в 16Мб на документ, когда делаю аггрегированный запрос по большой куче данных?
Олег
Собираешь один документ из кучи данных?
да .... точнее, почти .... много документов из кучи данных, но суть не меняется
Олег
Пересмотреть вывод данных?
на этом этапе и падает
Gor
Bson на один документ - не на все
Gor
Запрос покажешь?
Георгий
Всем привет, есть вопрос как сделать связь одной коллекции с другой правильно? - магазин - продукт Получается в магазине могу посмотреть продукты В продукте список магазинов где он продается. Мне приходит на ум только одно В магазине хранить массив продуктов(логично), в продукте массив магазинов, нормальный подход? Или как то по другому? А то мне коллеги которые работают с реляционными БД говорят создать коллекцию где эти связи будут, но я что-то не допираю как😅
yopp
https://www.mongodb.com/world/hackathon
yopp
в магазине массив продуктов хранить не обязательно, потому что продукты в этом магазине можно получить запросом к коллекции продуктов
yopp
через коллекцию тоже можно, но в этом не очень много смысла
Георгий
связи можно хранить с одной стороны, например в продукте
Но что более правильно будет? Хочется делать по уму))
yopp
через коллекцию тоже можно, но в этом не очень много смысла
^ пока отношений между одельными документами не очень много, когда их станет очень много, десятки тысяч, тогда это имеет смысл
yopp
Но что более правильно будет? Хочется делать по уму))
нет правильно, есто эффективно или удобно
yopp
массив айдишников магазинов вполне себе решение
yopp
сделать по нему индекс и вот
Nikolai
Всем привет, нормально ли, что при репликации у меня основаная нода, где были данные, висит в SECONDARY, а вторая нода — в STARTUP2?
Nikolai
И есть ли возможность сделать основную ноду доступной для записи?
Nikolai
Gor
Или как там она называется что без данных а для голосования только
Георгий
массив айдишников магазинов вполне себе решение
Спасибо за совет)) То есть хватает в одной коллекции держать связь, а при каких случаях нужно делать связь и там и там?
Gor
О арбитр
yopp
например если связей не много и они постоянно все используются
yopp
документные хранилища, в отличии от табличных, позволяют плавно регулировать степень денормализации/нормализации в зависимости от паттернов использования
yopp
каких-то общих советов тут тяжело дать, потому что это всё зависит от конкретного случая
Георгий
Ооо так более понятно))
Георгий
А есть где нибудь об этом почитать всем на русском?🙈
Nikolai
добавить арбитра https://docs.mongodb.com/manual/tutorial/add-replica-set-arbiter
Пишет, что не мастер 🙁 rs0:SECONDARY> rs.addArb(«meh:27018", {"force": true}) { "ok" : 0, "errmsg" : "replSetReconfig should only be run on PRIMARY, but my state is SECONDARY; use the \"force\" argument to override", "code" : 10107, "codeName" : "NotMaster" }
Nikolai
да. чтоб rs0 стал мастером надо выключить вторую ноду
Тогда реплекация прервется или остановится?
Nikolai
В смысле, можно будет продолжить реплицироваться?
yopp
в худшем случае она начнётся с начала
yopp
в логах можно посмотреть на прогресс
yopp
и худший случай наиболее вероятен, если нода ещё не начала тянуть оплог
yopp
но помоему когда оплог тянетс там recovering, а не startup2
Nikolai
Чет выключил вторую ноду, но основная всё равно SECONDARY
yopp
Чет выключил вторую ноду, но основная всё равно SECONDARY
странно что выборы не триггернулись. тогда рестарнануть ноду чтоб она одна включилась и если не поможет то добавить арбитра с {force: true}
Nikolai
Кажется, оно зациклилось ))) rs0:SECONDARY> rs.reconfig(cfg, {force : true}) { "ok" : 0, "errmsg" : "Replica set configuration must contain at least one non-arbiter member with priority > 0", "code" : 103, "codeName" : "NewReplicaSetConfigurationIncompatible" } rs0:SECONDARY> rs.addArb(«meh», {"force": true}) { "ok" : 0, "errmsg" : "replSetReconfig should only be run on PRIMARY, but my state is SECONDARY; use the \"force\" argument to override", "code" : 10107, "codeName" : "NotMaster" } rs0:SECONDARY>
yopp
а что в rs.config?
yopp
Replica set configuration must contain at least one non-arbiter member with priority > 0
yopp
значит в cfg в members нет самой ноды
Nikolai
{ "_id" : "rs0", "version" : 87740, "protocolVersion" : NumberLong(1), "members" : [ { "_id" : 0, "host" : "moodle-vm:27017", "arbiterOnly" : false, "buildIndexes" : true, "hidden" : false, "priority" : 0, "tags" : { }, "slaveDelay" : NumberLong(0), "votes" : 1 }, { "_id" : 1, "host" : «meh:25517", "arbiterOnly" : false, "buildIndexes" : true, "hidden" : false, "priority" : 1, "tags" : { }, "slaveDelay" : NumberLong(0), "votes" : 1 } ], "settings" : { "chainingAllowed" : true, "heartbeatIntervalMillis" : 2000, "heartbeatTimeoutSecs" : 10, "electionTimeoutMillis" : 10000, "catchUpTimeoutMillis" : 60000, "getLastErrorModes" : { }, "getLastErrorDefaults" : { "w" : 1, "wtimeout" : 0 }, "replicaSetId" : ObjectId("5ca7b84f2a827e91d18d8607") } }
Nikolai
Вроде есть
yopp
ээээ
yopp
"priority" : 0,