Дмитрий
Доброго времени суток, создал в docker-compose сервис монги :
db:
image: mongo:4.4.1-bionic
container_name: db
environment:
MONGO_INITDB_ROOT_USERNAME: admin
MONGO_INITDB_ROOT_PASSWORD: admin
MONGO_INITDB_DATABASE: admin
command: mongod --auth
volumes:
- db:/data/db
restart: always
networks:
- azia-backend
ports:
- 27017:27017
Пытаюсь через компас к нему подключиться (строка mongodb://admin:admin@localhost:27017/admin?authSource=admin&readPreference=primary&appname=MongoDB%20Compass&ssl=false) и пишет что я не авторизован
Второй день не могу понять в чем причина, может знает кто?
Roman Khonichev
логи в контейнере монги что говорят?
Sergey
ⒶⓋⒶ
const handleDuplicateFieldsDB = (err) => {
const errmsg = Object.keys(err.keyValue)[0];
const value = err.keyValue[errmsg].match(/(["'])(?:\\.|[^\\])*?\1/)[0];
const message = Duplicate field (${errmsg}). Duplicate field value: ${value}. Please use another value (${err.keyValue[errmsg]});
return new AppError(message, 400);
};
const sendErrorDev = (err, res) => {
res.status(err.statusCode).json({
status: err.status,
error: { err, errmsg: err.message },
message: err.message,
stack: err.stack,
});
};
Dmitriy
Коллеги, скажите пожалуйста.
в group делаю такую вещь
'a.b': {$sum: '$a.b'},
И мне пишет
The field name 'a.b' cannot contain '.'
Как быть в таком случае?
Viktar
Поставьте $
Dmitriy
Viktar
Иначе у вас получается поле а.б а точки в поле нельзя
Dmitriy
Получается что у меня обьекта a нет, и оно пытается обратиться к обьекту a , а его не существует и до поля b запрос не доходит и парадает
Viktar
Он результат пытается сохранить в поле а.б (не в объект)
Viktar
Вместо а.б сделайте имя без точки. Мне не очень удобно с телефона писать
Viktar
'ab': {$sum: '$a.b'}
Viktar
Либо $a.b это зависит от вашей структуры и группировки
Dmitriy
Понял, спасибо
Дмитрий
логи в контейнере монги что говорят?
{"t":{"$date":"2021-03-30T09:10:34.800+00:00"},"s":"I", "c":"ACCESS", "id":20249, "ctx":"conn53","msg":"Authentication failed","attr":{"mechanism":"SCRAM-SHA-1","principalName":"admin","authenticationDatabase":"admin","client":"172.29.0.1:58558","result":"UserNotFound: Could not find user \"admin\" for db \"admin\""}}
Roman Khonichev
{"t":{"$date":"2021-03-30T09:10:34.800+00:00"},"s":"I", "c":"ACCESS", "id":20249, "ctx":"conn53","msg":"Authentication failed","attr":{"mechanism":"SCRAM-SHA-1","principalName":"admin","authenticationDatabase":"admin","client":"172.29.0.1:58558","result":"UserNotFound: Could not find user \"admin\" for db \"admin\""}}
Если MONGO_INITDB_DATABASE: admin поменять с admin на любую другую тоже не работает?
Дмитрий
I
Всем привет. Как сохранить список моделей (insretAll) При этом не сохранять модельки если их id уже есть
I
в этот список
Mansur
Ребят привет! Использую mongo transactions и change streams и официальный драйвер mongodb для golang. Вопрос такой, при вызове метода StartTransaction() и последующих операциях, к примеру InsertOne(), срабатывает change stream, хотя я ожидал, что стрим сработает только после вызова Commit(). Можно ли как-нибудь это настроить, кто-нибудь подскажет?
Denis
Mansur
Denis
по логике не должен
Mansur
У меня он не в контексте (
Mansur
Но вот почему то так работает
Mansur
А в документации, ничего не вижу касаемо этого вопроса
Mansur
по логике не должен
Вопрос снят, спасибо, разобрался, благодаря вашей подсказке. Нашел ошибку в контекстах при открытии транзакции. Процесс инсерта выполнялся не в рамках транзакции, поэтому и срабатывал стрим.
Arystan
Ребят, всем салем. нужна помощь
есть две таблицы branches, users
branches:
group_id:int
enabled:bool,
users:
userID:int,
branches:[
{
group_id:int,
balance:float
},
]
и хочу вот теперь получить данные из таблицы users филиалы из таблицы branches но с филтром enabled:true, чтобы в результате приходил ответ следующий:
result:
userID,
branches:[{branchID, balance}]
Вот мой запрос:
{
from: 'branches',
let:{branchID:"branches$.group_id"},
pipeline:[
{$match:{$expr:{ $and:
[
{ $eq: [ "$enabled", true ] },
{ $eq: [ "$group_id","$$branchID" ] }
]
}}}
],
as: 'branches'
}
андрей
Привет, нужно ли создать пользователя? Если приконектится можно без этого
Александр
Добрый день. Подскажите, пожалуйста, как ускорить загрузку данных на странице ? У меня есть одна большая коллекция, которая имеет такую структуру и я формирую правильный мне список в контроллере через Lodash. Подскажите советом пожалуйста )
Looch
Александр
Roman
мдааа, печально что у сортировки буква "П" идет раньше буквы "С" ((
Александр
Александр
Это может как -нибудь помочь ?
Александр
Ilya
День добрый. Есть коллекция. Есть условное поле id - числовой идентификатор. Необходимо реализовать авто инкрементацию данного поля, то есть 1 документ в коллекции - id=0, для второго id=1, для третьего id=2 и так далее. Однако если действовать просто - запрашивать count в коллекции, и это число ставить в качестве id для нового создаваемого документа, то существует риск дублирования id, если запросы выполнятся одновременно. Могу я решить данную проблему с помощью транзакций? Ведь в монге оптимистическая блокировка, а в описанном мною случае write conflict просто не может случиться. И если нет, то какие вообще пути существуют для решения данной проблемы?
Nick
День добрый. Есть коллекция. Есть условное поле id - числовой идентификатор. Необходимо реализовать авто инкрементацию данного поля, то есть 1 документ в коллекции - id=0, для второго id=1, для третьего id=2 и так далее. Однако если действовать просто - запрашивать count в коллекции, и это число ставить в качестве id для нового создаваемого документа, то существует риск дублирования id, если запросы выполнятся одновременно. Могу я решить данную проблему с помощью транзакций? Ведь в монге оптимистическая блокировка, а в описанном мною случае write conflict просто не может случиться. И если нет, то какие вообще пути существуют для решения данной проблемы?
первый путь решения - не использовать автоинкременты и донести до бизнеса, что для его задачи оно не требуется
второй путь - если по какойто причине (лень, не хочется связываться, хочется гемороя дополнительного, и т.п.) всетаки реально нужен автоинкремент, то заводим коллекцию, в нее документ с счетчиком, дергаем $inc и тащим измененный док
третий вариант - на случай если пробелы между автоинкрементным id прям ваще недопустимы, бизнес изза этого попадает на бабки или нелояльность юзеров (подтвержденную, а не со слов менеджеров) - тогда уже берем транзакции, все становится медленно, но зато честный автоинкременты
Arsen
привет! как можно оптимизировать поиск текста регулярным выражением?
Евгений
Кто-то делал миграции для нормализации данных
Может есть статейка где-то как это замутить правильно?
Александр
Новый вопрос. Выяснил, что это обрабатывается 4 секунды. Как это переписать на правильный запрос и сократить время?
Александр
Looch
Подскажите пожалуйста
у тебя ж там написано даже в комменте что алгоритмическая сложность очень большая, попробуй сотябы начать с того что бы избегать циклов внутри других циклов
Looch
почитай вообще доку, может ты сможешь что-то из этого тут применить https://docs.mongodb.com/manual/core/map-reduce/
Александр
Александр
Looch
Looch
может тебе тут сначала нужен какой-то filter
Looch
Александр
Александр
Александр
Точно
Looch
почитай доку и подумай как можно вытаскивать не все данные а только те которые тебе нужны
Looch
может даже монга и быстро работает но ты по сети гоняешь много трафика и это занимает время
Nick
Nick
использовать aggregation и настроить преобразования и фильтрации в нем
Nick
Nick
и вроде как все что делается внутри обработки укладывается в возможности агрегаций монги и можно получить сразу ответ
Александр
Евгений
ок, спасибо
Nick
ок, спасибо
такое глобальное изменение структуры скорее всего потребует переписывание всего что связано с работой с базой, что наверняка повлечет и другие доработки - так что фактически новый софт пилить
Евгений
пушем в БД занимаюсь не я, это делает другой плагин совсем в другой зоне ответтвенности, потому и подумал проводить миграции, это приведет к распуханию БД, но при этом сохранит существующую структуру, а по таймеру можно прогонять новые данные в нормализированную стируктуру…
так что пока не знаю как это организовать (((
Nick
Александр
Евгений
ну вот к примеру на MSSql когда мы хотели расширить БД новым полем или зависимостью, я делал миграции для того чтобы покрыть предыдущие данные проинитив их значением по имолчанию или NULL чтобы это все не падало при запросах
Думал что и тут такое есть.
Вот к примеру докину я Схему ОдикКоМногим, но с моими знаниями MongoDB я понимаю что нужно переломатить всю базу в каком-то цикле, и запушить ссылки на эту модельку, а в SQL подобных БД вроде можно было указать новуи и старую модель и мигрировать.
Я конечно давно уже не пилил yf cdzprt С# и реляционных БД, но вроде как помню о такой возможности.
Andry
Евгений
LДа это понятно, но из-за того что люди думают что в NoSQL можно пушить все одним скоупом при запросах бизнеса на многоуровневые выборки и калькуляции результатов агрегации занимают около 7-9 секунд, что совсем НЕ ТОРТ
По-этому данные нужно готовить перед отправкой в БД
А. то потом такие горе разрабы говорят MongoDB - дно….
Nick
Nick
Евгений
спасибо, почитаю…
Александр
Подскажите, как это переписать для mongodb aggregate ?