Anonymous
Здесь можно обойтись regexp
Долго слишком ищет
yopp
Вероятно я не туда думаю при организации бд Мне нужно получать документы по части текста. Например есть док {text: "Привет мир и чат"} Мне нужно по запросу "мир и чат" получить документ, что выше
https://www.mongodb.com/docs/manual/reference/operator/aggregation/indexOfCP/#mongodb-expression-exp.-indexOfCP Сразу отмечу, что поиск подстроки в монге не будет покрываться индексом
Андрей Михайлович
У монги есть ops manager. Но мне было бы удобнее всё то же видеть в grafana. Есть способ? Подскажите как?
yopp
У монги есть ops manager. Но мне было бы удобнее всё то же видеть в grafana. Есть способ? Подскажите как?
Есть готовый продукт от percona: https://docs.percona.com/percona-monitoring-and-management/setting-up/client/mongodb.html Или отдельно экспортер для прометея: https://github.com/percona/mongodb_exporter
Милена
У меня не запускается сервер, тк захожу не с того IP. Подскажите, пожалуйста, как это пофиксить
Милена
Не могу понять где у меня конфигурационный файл
Артем
Всем привет. Можете помочь с запросом, который должен делать "вставить если нет, но если есть, то обновить, только если дата больше чем та что есть"? Что-то голову сломал. (С монгой очень давно не работал)
Милена
мне кажется, или тут четко написано как пофиксить?
Написано убедиться, что IP есть в файле и указан к нему путь, а в нем 1000 строк кода. Как я должна убедиться?)
Милена
разве там так написано? в файле?
в списке адресов класетра, а где у кластера список адресов?
Милена
ctrl + F и поискать.. типа того, не?
не находит, пробовала
Ravshan
Айпишку в атласе добавь или убери фильтр по айпи
Ravshan
Написано же
Артем
не находит, пробовала
Да, там в логах написано про атлас. Кст почему бы просто не развернуть в докере? Было бы проще же.
Thunder
переведите нормально текст, если не понимаете что написано
Артем
Всем привет. Можете помочь с запросом, который должен делать "вставить если нет, но если есть, то обновить, только если дата больше чем та что есть"? Что-то голову сломал. (С монгой очень давно не работал)
Товарищи, вопрос серьезный, ибо я уже начал вы*бываться в рабочем чатике что такое провернуть можно, а потом погряз в доке и поплыл. Предполагал что-то типа db.coll.replaceOne({value: 121}, {...}, {upsert: true, $min: {data: datanow}});
Милена
Да, там в логах написано про атлас. Кст почему бы просто не развернуть в докере? Было бы проще же.
Значит в Атласе надо найти список IP адресов, для которых доступно подключение?
Артем
Артем
простой апдейт с апсерт тру и индексом на уникальность по нужным полям
Там нужно апдейтить, только если дата меньше (т.е. мы пришли с более свежими данными)
Nick
Stroitelev
Подскажите, как в mongo принято действовать с case sensitive данными? Есть два текстовых поля, по которым необходимо строить индекс. Данные могут приходить в разных кейсах и нужно уметь быстро по ним искать. Одно из полей может содержать данные на экзотических языках (вьетнамском, корейском, японском и т.д.) Пока вижу такие пути: 1) Принудительно приводить все данные к единому кейсу перед записью, строить индекс; 2) Делать доп атрибут, содержащий копию данных в lowerCase и строить по нему индекс; 3) Строить индекс с учётом collation и затем выполнять запросы с указанием collation. В этом варианте смущает, что данные могут быть в locale != 'en'
Stroitelev
могу ошибаться, но текстовый индекс в монго и так case insensitive. Но искать текст в монго проблематично
Первое текстовое поле в данном случае email, а второе - текстовый код из нескольких символов (<=5). Надеюсь, что при наличии индекса серьезных проблем быть не должно. Но буду тестить в любом случае
Nick
Полное совпадение
Тогда рядом поле с нижним регистром и обычный индекс по нему самое простое и стабильное решение
Air
После пополнения данными ранее созданный индекс надо пересоздавать?
Thunder
Привет, кто знает как элегантно сделать апдейт значения в таком виде, если 1, сеттим -1, если -1, сеттим 1 ?)
Aryn
Подскажите, как сделать поиск, если документа нет в другой коллекции? Например, коллекции main: _id: 1 _id: 2 _id: 3 Коллекцмя other: m_id: 2 Нужно достать все документы из коллекции main, которых нет в other.
Дурак из фильма
Подскажите как читать, ну и исправить потом такую ошибку? Выполняю команду/ # mongorestore --db door --verbose /dump/door Получаю в конце Failed: door.users: error reading database: not authorized on door to execute command { listCollections: 1, cursor: { batchSize: 0 }, $db: "door" } Есть в дампе каталог door с джейсончиком и бсончиком users, но как, блин, дамп то влить на новом хосте?
-
Свои значения подставь
Дурак из фильма
Логин и пароль откуда? Я не задавал в новой систеем, а в старой не знаю их
-
Логин и пароль откуда? Я не задавал в новой систеем, а в старой не знаю их
Не знаю, что ответить т.к. не приходилось такое делать. В открытых источниках нашел, что логин и пароль нужен от текущей бд. Также был случий, когда из-за конфига, не всё удавалось выполнить.
-
Не знаю, что ответить т.к. не приходилось такое делать. В открытых источниках нашел, что логин и пароль нужен от текущей бд. Также был случий, когда из-за конфига, не всё удавалось выполнить.
Это к тому, что иногда лучше создать пользователя, настроить доступ к бд и выдать ему необходимые настройки. В твоем случае нужен пользователь с ролью root либо restore
Дурак из фильма
А если в конфигах аппки найти креды от того юзера, который ходит в базу, это подойдёт? Или это будет другое?
Дурак из фильма
Так ты же сказал, что в новой бд не создавал пользователя
Да, там пока пусто. Но в коде аппки то есть креды по идее. И я в итоге её на другой хост направлю, когда волью дамп
NULL
Подскажите как пофиксить фильтр для поиска документов Вышел примерно такой фильтр: filter1 := bson.M{ "_id": oid, "$or": bson.A{ bson.M{"field1": bson.M{"$eq": 0}}, bson.M{"field2": bson.M{"$lte": mongodb.ToMongoDateTime(now.UTC())}}, bson.M{ "$and": bson.A{ bson.M{"$expr": bson.M{"$ne": bson.A{bson.M{"field4": primitive.Null{}}, true}}}, bson.M{"$expr": bson.M{"$ne": bson.A{bson.M{"field2": primitive.Null{}}, true}}}, bson.M{"field4": bson.M{"$lte": "field2"}}, }, }, }, } У меня не работает блок $and в конце Основная идея этого блока подобрать нужный документ по фильтру, но при использовании lte/gte... подбирают документы в которых нету одного из полей
Egor
А я могу прямо в query (который find, НЕ aggratate) сконвертить миллисекунды в дату? У меня на руках миллисекунды и с ними надо делать $gte/$lt для timefield в time series collection? Как использовать непосредственно миллисекунды? $toDate, как я понял, работает только в aggregate.
Egor
Зачем усложнять, если вы в коде можете это сделать
Да нормас всё, вот так вот работает time: {$gte: ISODate(1689944802866), $lt: ISODate(1689955602866)}
Кылычбек
Всем привет, кто знает как добавить analytics node и мне нужно конфигурировать его вместо primary database
Андрей
Авторизоваться. В тексте ведь написано однозначно.
Андрей
Либо перевалить субд без авторизации в конфиге.
Дурак из фильма
Авторизоваться. В тексте ведь написано однозначно.
Я же никак не авторизовывался когда снимал дамп. И для заливки не знаю какие креды использовать. Я не создавал изначальную базу
Дурак из фильма
Под каким юзером оно хотя бы по умолчанию ломится? Под root?
Андрей
Ни под каким, ведь авторизация не передается.
Дурак из фильма
Так к админу зайдите, который ее админит, если нет доступа на сервер
На сервер есть доступ, я же дамп сделал. Админа нет в доступе.
-
На сервер есть доступ, я же дамп сделал. Админа нет в доступе.
Так создай пользователя, тебе об этом несколько дней назад говорил
-
Оно же явно просит авторизацию
Андрей
Весело 😆 Ресторим базы без ведома ответственных. Передать рутового юзера в монгоресторе, если субд под авторизацией поднята. Если нет доступа к руту и его созданию, а есть доступ в окружение сервера, что просто аутизм какой-то, то увалить инстанс, закоментить авторизацию, и отресторить без авторизации.
Андрей
И создать рута в конечном счете для себя ☝️
Дурак из фильма
Весело 😆 Ресторим базы без ведома ответственных. Передать рутового юзера в монгоресторе, если субд под авторизацией поднята. Если нет доступа к руту и его созданию, а есть доступ в окружение сервера, что просто аутизм какой-то, то увалить инстанс, закоментить авторизацию, и отресторить без авторизации.
На новом хосте я монгу поднял, что бы репликацию сделать. Но в первой итерации решил хотя бы просот дамп перенести и чуть лучше в монге разобраться. Никакой специальной авторизации и юзеров не созхдавал ни в старой СуБД, ни в новой.
Дурак из фильма
Мде. Создал юзера командой db.createUser({"user": "root", "pwd": "derparol", "roles": [{ role: "dbOwner", db: "door"}, {"role": "readWrite", "db": "door"}]}) Но при заливке дампа теперь другая ошибка про то что аутентификэйшн фэйлд. Хотя пароль и ю.зер тот же
Дурак из фильма
ааа, блин, оно оказывается не применило юзера, я ведь моногошелл запускаю без авторризации и потому оно не хочет создавать юзера.... И как тогда его создать? 2023-07-22T10:31:23.265+0000 E QUERY [thread1] Error: couldn't add user: there are no users authenticated :
Дурак из фильма
Говорят надо убрать параметр --auth при запуске демона. Интересно как это сделать в случае, когда у меня монга в докере )
Дурак из фильма
о, всё встало на свои места. В докер композе был задан юзер оказывается по-умолчанию, а я совсем забыл, что там такие енвы были заданы.
Дурак из фильма
Спасибо за наводки и что не закидали тухлыми помидорами, как бывает в некотрых других комьюнити )
sp
как на 287 строчке после gte правильно прописать значение поля endTime? в таком виде как на скрине это условие не срабатывает
sp
а вот так работает, если указать явно единицу
-
а вот так работает, если указать явно единицу
Так вы разные условия используете. Там где 1, у вас gte, а где комментарий, там lte