Антон
почему может изменяться время выполнения count с фильтром от 1 до 8 секунд и можно ли это как-то оптимизировать? просто выполняю один и тот же запрос несколько раз. Если не слать запрос некоторые время, то обрабатывается секунды 4, и если отправить запрос еще раз, то уже секунду - две выполняется. CPU на 30% загружается, DISK UTIL сначала на 45, потом 80, и 20%(это при долгом запросе). Когда быстро, то диск утил максимум до 40 доходит
Yaroslav
почему может изменяться время выполнения count с фильтром от 1 до 8 секунд и можно ли это как-то оптимизировать? просто выполняю один и тот же запрос несколько раз. Если не слать запрос некоторые время, то обрабатывается секунды 4, и если отправить запрос еще раз, то уже секунду - две выполняется. CPU на 30% загружается, DISK UTIL сначала на 45, потом 80, и 20%(это при долгом запросе). Когда быстро, то диск утил максимум до 40 доходит
Можно индекс построить, если его еще нет - для этого фильтра Надо детально разбираться, но при первом обращении нужная коллекция/индекс будет прочитана с диска и загружена в память так что следующий запрос будет быстрее работать (это нормально) Потом если придет запрос на другую коллекцию и памяти будет не хватать - монга выгрузит первую коллекцию из памяти и загрузит вторую, после чего запрос на каунт по первой коллекции будет работать долго - тк снова придется читать диск и грузить в память
Yaroslav
вам скорее надо вот эти два раздела прочитать:
Yaroslav
https://docs.mongodb.com/manual/core/index-single/
Yaroslav
https://docs.mongodb.com/manual/core/index-compound/
Yaroslav
для фильтров по одному и нескольким полям соответсвенно
Антон
спасибо, почитаю
Гена
Ребята
Гена
привет
Гена
а как через eval сменить пароль?
Гена
создать пользователя получается
Гена
а сменить пароль - испытание
Гена
даже нагуглить не получается
yopp
а сменить пароль - испытание
https://docs.mongodb.com/manual/reference/command/updateUser/#dbcmd.updateUser Поле pwd
yopp
Что именно?
yopp
db.adminCommand({updateUser: “foo”, pwd: “bar”})
Timur
Коллеги, а кто Atlas юзает? почему то не работает полнотекстовый поиск, хотя text index is created { $text: { $search: "java coffee shop" } } text index required for $text query
Andrey
Ага) В общем надо дампить lvm походу
сейчас другую коллекцию переносил, всё дело в индексах, в существующую без индексов ресторю дамп - очень очень бодро идет
a
rs.config().members[0].priority = 2 rs.config().members[1].priority = 1.5 rs.config().members[2].priority = 1 rs.config().members[3].priority = 1 rs.config().members[4].priority = 1 Расставил приориты вот так. Вопрос - что будет тогда, когда последние три сервера в списке упадут одновременно? Вариант 1. Primary members[0] будет продолжать работать. Вариант 2. Primary members[0] тоже упадет, т.к. останется всего лишь два сервера в реплике. Чтобы он заработал надо убрать три упавших сервера с реплики.
a
Все остановится. Т.к кворума не будет, для него надо минимум 3 ноды
А чтобы Primary members[0] заработало надо просто с кворума убрать упавшие три сервера через rs.remove()?
Nick
Вроде да, тонкостей не знаю, но реконфиг репликасета в части состава нод надо сделать точно
a
спс
☮️ Alex
Такой вопрос: Есть (много млн) документов структуры {_id, Array[{ObjectTypeA},{ObjectTypeA},{ObjectTypeB},...]} Тип обьекта есть в его поле, и я хочу посчитать по всей коллекции сколько документов с записями каждого типа у меня есть. Для этого естественно есть $unwind и $group по типу, но чтобы посчитать уники приходится добавлять в пайплайн $group по _id - и этот подход мне не нравится, так как по сути мы группируем к большому числу разных значений, это вроде как плохо? Какие у меня есть еще варианты?
Andrey
Коллеги, подскажите, как лечиться Could not find member to sync from. Нода исключалась из кластера, потом включена - в логе пишет: "We are too stale to use candidate as a sync source. Blacklisting this sync source because our last fetched timestamp is before their earliest timestamp Could not find member to sync from
Ardasher
Всем привет, юзаю go, вопрос: как реюзать одно соединение? нашел это https://stackoverflow.com/a/58366440 может у кого-то есть решения получше?
Ardasher
https://github.com/uptrace/go-treemux-realworld-example-app/blob/master/rwe/postgres.go хочу вот это как-то под монгу адаптировать но как-то безуспешно
Ardasher
func init
в init один раз создать? и потом как это соединения правильно будет из пакетов юзать?
Vadym
Привет, вопрос, как в спринг монго конвертировать поле в выражение? Я использую такой костыль: ArithmeticOperators.valueOf(field).add(0); Но это не подходит для строк. Есть нормальный вариант?
Anonymous
Всем привет Вопрос Кто использовал gridfs Какие впечатления? Грабли?
Ardasher
Привет всем, открываю 1 соединения с attlasian а оно показывает что 3, возможно это из-за того что там rs? но это не всё, когда выполняю запросы к базе открываются еще соединения до 11 и на этом больше не открываются, логирую каждый раз когда соединение новое открываю и по логам могу сказать что только 1 раз. но тут почему-то 11 открытых
Ardasher
Доброй ночи всем, вопрос, уместно ли тут вообще использовать транзакции: callback := func(sessCtx mongo.SessionContext) (interface{}, error) { result, err := coll.DeleteMany(sessCtx, filter) if err != nil { return nil, err } return result, nil } session, err := client.StartSession() if err != nil { return nil, err } defer session.EndSession(ctx) result, err := session.WithTransaction(ctx, callback) if err != nil { return nil, err } return result.(*mongo.DeleteResult), err
Ardasher
тут только одна операция, сессия без надобности
тут у меня вот такая задача и сказано что " использование транзакций обязательно." тут вообще где будет уместно их использовать?
Анатолий
тут у меня вот такая задача и сказано что " использование транзакций обязательно." тут вообще где будет уместно их использовать?
транзакции уместно использовать где делается несколько операций, к примеру: - сохранение пользователя - сохранение профиля пользователя в отдельной коллекции со связью на предидущую вставку или просто на несколько операций вставки/изменения/удаления при условии что неудача одной повлияет на целостность данных
Анатолий
конкретно в вашем случае все зависит от кода, если вы все делаете одной операцией то и транзакции по сути не нужны
Ardasher
конкретно в вашем случае все зависит от кода, если вы все делаете одной операцией то и транзакции по сути не нужны
ну вроде тут и так всё одной операцией должно делатся ведь? помоему тут нету таких взаимозависимых операций, или я где-то не прав? вы бы сделали в этой задаче что-то транзакциями?
Анатолий
ну, вы можете удалять рефреш токены по одному 😃
Анатолий
возможно где-то подвох, ибо по заданию я не вижу нигде вариантов использования транзакций, оно довольно таки простое
Ardasher
ну, вы можете удалять рефреш токены по одному 😃
внутри сессии по всем токенам юзера пробежатся и удалять их?
Анатолий
это шутка была
Ardasher
откуда требование про транзакции?
там дальше есть строчка "База данных MongoDB, топология Replica Set, использование транзакций обязательно"
Nick
там дальше есть строчка "База данных MongoDB, топология Replica Set, использование транзакций обязательно"
и еще вопросец, а откуда вообще задание? это рабочая таска или тестовое?
Nick
задайте вопрос тому кто задал его на предмет какие операции предполагается оборачивать в транзакции
Nick
в текущем задании необходимости в транзакциях нет
Ardasher
хорошо, спасибо за разъяснения
Nick
если только нет явного требования использовать разные коллекции для акссес и рефреш токенов
Ardasher
если только нет явного требования использовать разные коллекции для акссес и рефреш токенов
нет такого нету, да и помоему аккссес токены вообще не нужно же в базе хранить?
Ardasher
а как вы тогда проверите что он валиден?
это jwt токен, просто дешифрую и чтобы понять с каким рефрешом он связан в теле у него храню _id рефреш токена
Nick
а как вы выдадите рефреш токен в первый раз?
Ardasher
в теле ответа при логине выдаю, как-то так получается, id нужен для 3 маршрута(удаления конкретного токена)
Марк
Привет) Подскажите, пжл, как узнать, какие возможные уровни вложенности есть в коллекции? (грубо говоря, какие "столбцы" могут встречаться в документах). Проблема в том, что мне нужно выгрузить в csv несколько сотен документов из коллекции, у которых разный набор имеющихся параметров. Я пытаюсь экспортировать их из компаса, а он предлагает мне руками забить те поля, которые мне нужны. Можно как то либо заставить его просто сразу выгрузить (экспортировать в csv) мне все доступные поля, либо как то посмотреть, какие вообще поля возможны?
Марк
Да и на самом деле даже не обязательно в csv. Даже при попытке экспортировать данные в json, компас по прежнему предлагает руками забить нужные поля
yopp
А как это сделать? :))
https://docs.mongodb.com/database-tools/mongoexport/#export-in-json-format
Марк
https://docs.mongodb.com/database-tools/mongoexport/#export-in-json-format
А, так пробовал, но не получается из за того, что в названии коллекции есть точка (.). И я не понимаю, как ее обойти
Viktar
Покажите пример колекции
Viktar
Названия
Марк
cps.app_data
Анатолий
cps.app_data
cps\.app_data - так попробуй
Viktar
Да. Попробуйте заэкранировать
Марк
Да. Попробуйте заэкранировать
Все равно не хочет, пишет SyntaxError: Unexpected token, expected ";" (1:14) )
Анатолий
а покажи всю команду