Nikita
в данном случае обычный update с выставленным upsert:true. главное задать корректный фильтр
если upsert:true то будет будет работать проверка существует ли запись или нет ?
Nick
да
Nikita
да
благодарочка )) плюсик в карму )))
Nikita
да
это я упустил про чтении документации ))
Артем
Гайсы, а если несколько клиентов одновременно меняют запись, что происходит в Монго?
Aleksey
В айти не бывает одновременно
Артем
я думаю ты понял, что имелось ввиду
Артем
в доках написано что update поддерживает атомарность в рамках одного документа
Артем
не могу понять как это?
Nick
это значит что только одна операция записи будет проводиться над одним документом в один момент времени. используются стандартные блокировки на запись
Nick
также это значит что если одновременно из двух разных мест делается изменение значения поля, то результатом будет выполнение записи от самого нового
Nick
и туда же, если вы указыаете для фильтра некоторую информацию, которая меняется из другого коннекта, то от очередности зависит выполнится ли изменение или нет
Nick
смотри логи монги
yopp
Ну вот и причина: не хватает дескрипторов.
yopp
https://docs.mongodb.com/manual/reference/ulimit
Vova
Всем привет! Прошу помочь с агрегацией данных. Есть несколько коллекций со строками, и нужно сгруппировать строки по некоторым (кастомным) признакам схожести. Грубо говоря, из этого: { a: ['aaa', 'bbb', 'ccc'] b: ['aab', 'bbc', 'xyz'] c: ['aac', 'uvw', 'xyz'] } Должно получиться вот это [ { a: 'aaa', b: 'aab', c: 'aac' }, { a: 'bbb', b: 'bbc' }, { a: 'ccc' }, { b: 'xyz', c: 'xyz' }, { c: 'uvw' } ] Изначальных коллекций около 20, размерность каждой - порядка 100тыс. записей. Насколько это трудоёмко в реализации и по быстродействию на монге? Или имеет смысл смотреть в сторону реляционных БД?
Nick
по всем коллекциям сразу невозможно
Nick
а так https://docs.mongodb.com/manual/reference/operator/aggregation/group/
Vova
Насколько я понимаю, таким образом можно группировать только по предустановленным аккумуляторам... Проблема в том, что у меня в роли аккумулятора - кастомная js-функция сравнения. Я могу её каким-то образом применить для группировки?
Nick
нет
Nick
хотя, можно использовать map-reduce и там уже что угодно в пределах почти чистого Js
Nick
но MR такое себе, если операции редкие то пойдет
Vova
ок, спасибо, буду пробовать!
Bandikoot
если инициализация процесса происходит через systemd, то лучше прямо в service-файле прописать LimitNOFILE=%num%
ᅠ ᅠ ᅠ ᅠ
пытаюсь подключиться к кластеру и получаю ошибку: "com.mongodb.MongoTimeoutException: Timed out after 30000 ms while waiting for a server that matches ReadPreferenceServerSelector{readPreference=primary}. Client view of cluster state is {type=UNKNOWN, servers=[{address=cluster.mongodb.net:27017, type=UNKNOWN, state=CONNECTING, exception={com.mongodb.MongoSocketReadException: Prematurely reached end of stream}}]" Кто-то сталкивался с таким?
ᅠ ᅠ ᅠ ᅠ
кластер уже создан, админ с паролем есть
Alexander
Коллеги, а как сообщить mongos, что конфиг сервер другой?
rdcm
MongoTimeoutException ну это тснадартный эксепшн, когда драйвер не видит монгу, 95% что неверный коннекшн стринг
rdcm
если речь про старт приложения и монга жива
ᅠ ᅠ ᅠ ᅠ
если речь про старт приложения и монга жива
монга жива, коннект установлен, имя хоста указал
rdcm
> коннект установлен это как определяется?
Alexander
в конфиге
лайв хочется
yopp
лайв хочется
Если в настройках указаны хосты, то вы можете поменять адреса в dns. Емнип, монга раз в какое-то время обновляет записи. Если по ip настроено, то будет практически невозможно без даунтайма
rdcm
запущенный mongod это не коннект к mongod )
yopp
Вероятно подключения к серверу просто дропаются
rdcm
а монга локально запущена вместе с приложением или на виртуалке до которой надо достучаться?
Alexander
Если в настройках указаны хосты, то вы можете поменять адреса в dns. Емнип, монга раз в какое-то время обновляет записи. Если по ip настроено, то будет практически невозможно без даунтайма
Да не, хост тот же, порт тот же, но если rs.initiate() на config server неудачно прошло, откатили назад и прорестартили, и config server теперь standalone, а монгоc хочет реплсет (в логах пишет)
ᅠ ᅠ ᅠ ᅠ
запущенный mongod это не коннект к mongod )
ну в shell я поключаюсь нормально, в compass тоже, но когда запускаюсь через свое приложение, то мне вылетает ошибка
ᅠ ᅠ ᅠ ᅠ
хотя указал по примеру документации, прописав свой кластер
rdcm
а юзера с паролем?
ᅠ ᅠ ᅠ ᅠ
а юзера с паролем?
прописал его в коде
ᅠ ᅠ ᅠ ᅠ
в кластере тоже добавлен
rdcm
можно попробовать указать всё в коннекшн стринге, лишнее из кода удлаить
yopp
Вам нужно CSRS вернуть в штатный режим
Alexander
Ну вот и я говорю - адреса менять не надо
Alexander
Надо именно вот это сделать, только как? )
ᅠ ᅠ ᅠ ᅠ
можно попробовать указать всё в коннекшн стринге, лишнее из кода удлаить
в коде прописал таким образом MongoClientURI connectionString = new MongoClientURI("mongodb://юзер:пароль@кластер.mongodb.net:27017");
Alexander
конфиг сервер прорестартил, предварительно вернув конфиг в исходное состояние
yopp
Убедиться что все CSRS ноды запущены и видят друг друга
Alexander
Стоп. Нет
Alexander
Мне нужно SCCC
Alexander
Обратно SCCC. Вот что мне нужно. Монгос этого не понимает. Как ему объяснить?
yopp
SCCC — устаревший и не поддерживаемый механизм.
rdcm
>кластер.mongodb.net:27017 а о каком кластере речь и почему только один хост? для реплика сета хосты указываются через запятую
yopp
В 3.4 его уже нет
rdcm
>стандартный бесплатный кластер, который можно создать для начинающего про облачную монгу не в курсе, но вообще да, если делать самому например
rdcm
https://docs.mongodb.com/manual/reference/connection-string/ mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]
ᅠ ᅠ ᅠ ᅠ
https://docs.mongodb.com/manual/reference/connection-string/ mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]
спасибо. скорее всего упустил момент с написанием нескольких хостов
Alexander
SCCC — устаревший и не поддерживаемый механизм.
Это так типично для ру комьюнити - учить жить вместо ответа на вопрос
Gleb
Это так типично для ру комьюнити - учить жить вместо ответа на вопрос
тут проблема ток в том что ты читать не хочешь, откатись на ту версию где это работает
Gleb
можешь взять исходники и портировать на 3.4
Alexander
Я нигде не сказал, что у меня та версия, где это не поддерживается
yopp
Это так типично для ру комьюнити - учить жить вместо ответа на вопрос
Вы на сутки в read-only за хамство. Наша группа для помощи, а не для выяснения отношений. Если вы не может чётко сформулировать свою проблему и начинаете хамить на попытки других разобраться в вашей проблеме, значит вы сами не понимаете в чём проблема. Разберитесь в проблеме и возвращайтесь для продуктивного диалога. «Учение жизни» про deprecation and removal SCCC из официальной документации: > Starting in 3.4, the use of the deprecated mirrored mongod instances as config servers (SCCC) is no longer supported. Before you can upgrade your sharded clusters to 3.4, you must convert your config servers from SCCC to CSRS. https://docs.mongodb.com/manual/core/sharded-cluster-config-server По вашей проблеме: официальных плейбуков по откату с SCCC нет. Не понятно на какой вы версии, но вероятно вам необходимо сначала восстановить конфигурационные сервера, а потом перезапустить все монгосы. Если это результат неудачного обновления, вам необходимо убедиться что вы используете версии всех компонентов младше 3.4.
headbody
Привет ребят, подскажите, как скормить mongodb csv или json файл с украинским языком? Каждый раз в коллекцию добавляются кракозябры, пробовал и utf-8, 1251 и KOI8-U
Stepan
странно, ни разу проблем не было
Stepan
что вы имеете ввиду скормить?
headbody
Когда я в коллекцию добавляю через import data csv/json файл с украинским языком.
headbody
headbody
Мне или выдаёт ошибку.
headbody
Или если после брутфорса всех возможных кодировок оно съедается, то на выходе имею арабскую вязь, вместо языка.
Dmitry
Или если после брутфорса всех возможных кодировок оно съедается, то на выходе имею арабскую вязь, вместо языка.
постоянно делаю иморт украинского в utf-8, все ок. Скорее всего проблема с кодировками CSV/JSON, возможно была проблема конвертации в utf-8
Aleksey
@dd_bb а у тя есть скриншты графиков с твоего экпортера ?
Aleksey
я чот в паблике не вижу