Антон
почему может изменяться время выполнения 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
Что именно?
yopp
db.adminCommand({updateUser: “foo”, pwd: “bar”})
Anton
Anton
Timur
Коллеги, а кто Atlas юзает?
почему то не работает полнотекстовый поиск, хотя text index is created
{ $text: { $search: "java coffee shop" } }
text index required for $text query
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] тоже упадет, т.к. останется всего лишь два сервера в реплике. Чтобы он заработал надо убрать три упавших сервера с реплики.
Nick
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
yopp
Ardasher
Всем привет, юзаю go, вопрос: как реюзать одно соединение? нашел это https://stackoverflow.com/a/58366440 может у кого-то есть решения получше?
Ardasher
https://github.com/uptrace/go-treemux-realworld-example-app/blob/master/rwe/postgres.go хочу вот это как-то под монгу адаптировать но как-то безуспешно
Denis
Ardasher
func init
в init один раз создать? и потом как это соединения правильно будет из пакетов юзать?
Ardasher
Vadym
Привет, вопрос, как в спринг монго конвертировать поле в выражение?
Я использую такой костыль: ArithmeticOperators.valueOf(field).add(0); Но это не подходит для строк. Есть нормальный вариант?
Anonymous
Всем привет Вопрос Кто использовал gridfs Какие впечатления? Грабли?
Ardasher
Привет всем, открываю 1 соединения с attlasian а оно показывает что 3, возможно это из-за того что там rs? но это не всё, когда выполняю запросы к базе открываются еще соединения до 11 и на этом больше не открываются, логирую каждый раз когда соединение новое открываю и по логам могу сказать что только 1 раз. но тут почему-то 11 открытых
Daniil
Ardasher
☮️ Alex
☮️ Alex
Такой вопрос:
Есть (много млн) документов структуры {_id, Array[{ObjectTypeA},{ObjectTypeA},{ObjectTypeB},...]}
Тип обьекта есть в его поле, и я хочу посчитать по всей коллекции сколько документов с записями каждого типа у меня есть.
Для этого естественно есть $unwind и $group по типу, но чтобы посчитать уники приходится добавлять в пайплайн $group по _id - и этот подход мне не нравится, так как по сути мы группируем к большому числу разных значений, это вроде как плохо?
Какие у меня есть еще варианты?
Разобрался, я соскоблил все неуникальные поля внутри массива через проекцию, а затем использовал $setUnion для отсева уников:
{
"$addFields": {
"Array": {
"$reduce": {
"input": "$Array",
"initialValue": [],
"in": {
"$setUnion": ["$$value", ["$$this"]]
}
}
}
}
}
Anonymous
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
Анатолий
Доброй ночи всем, вопрос, уместно ли тут вообще использовать транзакции:
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
тут только одна операция, сессия без надобности
Анатолий
конкретно в вашем случае все зависит от кода, если вы все делаете одной операцией то и транзакции по сути не нужны
Анатолий
ну, вы можете удалять рефреш токены по одному 😃
Анатолий
возможно где-то подвох, ибо по заданию я не вижу нигде вариантов использования транзакций, оно довольно таки простое
Анатолий
это шутка была
Nick
Nick
Ardasher
Nick
задайте вопрос тому кто задал его на предмет какие операции предполагается оборачивать в транзакции
Nick
в текущем задании необходимости в транзакциях нет
Ardasher
хорошо, спасибо за разъяснения
Nick
если только нет явного требования использовать разные коллекции для акссес и рефреш токенов
Ardasher
Nick
Nick
а как вы выдадите рефреш токен в первый раз?
Ardasher
в теле ответа при логине выдаю, как-то так получается, id нужен для 3 маршрута(удаления конкретного токена)
Марк
Привет) Подскажите, пжл, как узнать, какие возможные уровни вложенности есть в коллекции? (грубо говоря, какие "столбцы" могут встречаться в документах).
Проблема в том, что мне нужно выгрузить в csv несколько сотен документов из коллекции, у которых разный набор имеющихся параметров. Я пытаюсь экспортировать их из компаса, а он предлагает мне руками забить те поля, которые мне нужны. Можно как то либо заставить его просто сразу выгрузить (экспортировать в csv) мне все доступные поля, либо как то посмотреть, какие вообще поля возможны?
Марк
Да и на самом деле даже не обязательно в csv. Даже при попытке экспортировать данные в json, компас по прежнему предлагает руками забить нужные поля
yopp
Марк
Viktar
Покажите пример колекции
Viktar
Названия
Марк
cps.app_data
Viktar
Да. Попробуйте заэкранировать
Анатолий
а покажи всю команду