Dmitriy
потому что на текущий момент это выглядит как лютый архитектурный треш
Александр
как у вас организованы данные, давайте вернемся все таки к тому что вы дадите пример своих данных
временная колекция ссылается еще на три, для вывода во фронт нужны все данные.
Dmitriy
зачем вам нужна временная коллекция то? 😳 ну вы сами подумайте, вы делаете несколько джоинов + временную коллекцию и хотите чтобы это работало быстро
Dmitriy
мало того что оно на уровне базы у вас уже тормозит так вы еще и все данные по http гоняете
Александр
зачем вам нужна временная коллекция то? 😳 ну вы сами подумайте, вы делаете несколько джоинов + временную коллекцию и хотите чтобы это работало быстро
я хочу сделать витрину по одному документу, поэтому добавил группировку, без нее все быстро работает
Dmitriy
ладно, вы не слышите, ваше решение делайте без группировки - оно у вас быстро работает
Александр
видимо так. хотел как лучше, а вот смысл, данные об аккаунте хранить в документе?
Dmitriy
не факт, все сильно от задачи зависит, например в задаче коллеги я бы картинки положилбы в коллекцию авторов в массив и тем самым избавился бы от одного лукапа минимум
Dmitriy
но сильно зависит от объемов данных
Dmitriy
видимо так. хотел как лучше, а вот смысл, данные об аккаунте хранить в документе?
я еще раз повторю, вы пытаетесь реляционную логику впихнуть в nosql решение - это ваша основная проблема в данный момент
Александр
не факт, все сильно от задачи зависит, например в задаче коллеги я бы картинки положилбы в коллекцию авторов в массив и тем самым избавился бы от одного лукапа минимум
у кождого документа, свой массив с картинками, + не вегда картинку грузят на сервер, иногда это внешнии файлы, отсюда еще колекция для них
Александр
воти получается мне нужен временный документ с определенной продолжительностью жизни и надо вывести витрину, где ссыока на документ, ссылка на автора + фото
Александр
теперь к витрине добавилась задача, надо чтобы в ней было по одному последнему документу каждого автора
Dmitriy
нет, не получается, получается пока только то что вы mysql портировали в монгу и ждете результат
Александр
нет, не получается, получается пока только то что вы mysql портировали в монгу и ждете результат
спорить об архитектури и критиковать можно до нового прихода христа! Проблема не решается от этого. Мне надо сделать! А потом буду уже крутить архитектуру или улучшать код и.т.д.
Александр
проект уже рабочий, надо сделать вывод витрины и все тут...
Dmitriy
в вашем случае проще всего это сделать 3 отдельными легкими запросами, честно
Dmitriy
и собрать выходной объект для фронта уже на клиенте
Александр
в вашем случае проще всего это сделать 3 отдельными легкими запросами, честно
obvpublish.aggregate([ { $match: {}}, {$sort :{UpDate:-1}}, { $group:{ "_id": "$avtorId", document:{ $first:"$$ROOT" }, } }, {$skip: 0}, {$limit : 2}, {$lookup: { "from": "obvs", "localField": "document._obdId","foreignField": "_id", as: "data"}}, {$lookup: { "from": "accounts", "localField": "document._avtorId","foreignField": "_id", as: "avtor"}}, {$lookup: { "from": "fotodos", "localField": "document._obdId","foreignField": "_obId", as: "fotodo"}}, ],function(err,docs){ console.log(err,docs) })
Александр
выводит как надо
Александр
и работает быстро
Illia
Привет. У меня такой вопрос: Есть две модели Case и Court. Обьект filter - параметры для выборки судебный дел из БД, но есть поле instance - которое принадлежит модели Court. То есть мне надо аггрегировать дела где case.court.instance = filter.instance. Но уперся в тупик, кто-то может подсказать? https://share.getcloudapp.com/X6uDg72x
Dmitry
Там наверняка надо в ObectID конертнуть ваш ид
Спасибо за помощь! Да именно конвертировать надо было, я так понимаю что айди храниться в типа объекта что бы таймштамп крепить и ещё наверное данные какие то нужные. Ещё раз большое спасибо💪👍
Denis
Присоединяюсь, очень интересно)
Igor
Друзья, подскажите пожалуйста Хочу добавить в схему объект, ключи которого мне заранее не известны, это возможно?
Aleksandr
нету схем в монге, только во фреймворках каких-нить
Igor
mongoose схема, которая задает структуру документа
Nick
Друзья, подскажите пожалуйста Хочу добавить в схему объект, ключи которого мне заранее не известны, это возможно?
По идее можно попробовать mixed тип, но на самом деле хз, если вы используете монгус то у вас должна быть схема уже определенной, иначе какой понт его использовать?
Igor
У меня есть такая схема заказа, поле headsets является довольно сложным объектом, как мне спроектировать схему под такую структуру?
Ivan
Подскажите можно как-то обновить несколько документов одним запросом К примеру, разным пользователям увеличить баланс на разное значение {“user_id”: 1}, {“$inc”: {“balance”: +2.2}} {“user_id”: 2}, {“$inc”: {“balance”: +0.2}} {“user_id”: 3}, {“$inc”: {“balance”: +1}}
Ivan
нужно сделать 3 запроса? db.users.update_one({“user_id”: 1}, {“$inc”: {“balance”: +2.2}}) db.users.update_one({“user_id”: 2}, {“$inc”: {“balance”: +0.2}}) db.users.update_one({“user_id”: 3}, {“$inc”: {“balance”: +1}})
Anton
Как можно обойти проблему с отсутствием автоинкремента в монге?
Anton
Сейчас присваиваю айдишник новому документу подсчетом их количества каждый раз, но после удаления и добавления другого объекта айдишники повторяются
Anton
Врядли проходиться по всем докам и менять айди адекватный варик
Aleksandr
Нужен внешний источник уникальных ид
Anton
Вообще ид необязательно числовой, стоит ли использовать в качестве айдишника ObjectID?
Denis
Вообще ид необязательно числовой, стоит ли использовать в качестве айдишника ObjectID?
uuid как варик в новое поле. Только оставьте в покое дефолтный _id И вопрос почему собственно он не подошел
Anton
uuid как варик в новое поле. Только оставьте в покое дефолтный _id И вопрос почему собственно он не подошел
Ну может я что-то не так делаю, но постман с ума сходит,если возвращать дефолтный _id
Anton
Это не ренейм, это аннотация такая, пишу на го
Anton
Аннотация для json - id, для монги - _id Id string `json:"id" bson:"_id"`
Denis
Это не ренейм, это аннотация такая, пишу на го
Понял, ну ты походу анмаршалл/маршал, неправильно делаешь, наверное
Denis
И он в билеберду кодит в жсон
Anton
Ну остальные строковые значения же нормально декодятся, это и странно
Denis
А смотри тип филда надо такой bson.ObjectId
Anton
Я просто переписал на uuid, так проще будет)
Anton
Правда url глаза режет немного для запроса /posts/de0f9096-0c9d-4b9d-9544-4c1d658a87d0/delete Ну да ладно
Ростислав ✚
Подскажите иза-за чего может не добрасывать в бд объекты, у меня скрипт обрабатывает csv файл и закидывает в бд через insertMany мангуста по 15к шт за раз. Всего около 1.4м документов, методу передаётся нормальное количество но записывается не всё, стоит атрибут ordered: false Нехватка даже с учётом объектов не прошедших проверку. Я это узнал потому что запустил по второму кругу и много прошло дополнительно, из-за чего это?
Ростислав ✚
Схема такая import {Schema, model} from 'mongoose'; const InfoSchema = Schema( { // _id: Schema.Types.ObjectId, hash: {type: String, unique: true}, person: {type: String}, reg_addr_koatuu: {type: Number}, oper_code: {type: Number}, oper_name: {type: String}, d_reg: {type: String}, dep_code: {type: Number}, dep: {type: String}, brand: {type: String}, model: {type: String}, make_year: {type: Number}, color: {type: String}, kind: {type: String}, body: {type: String}, purpose: {type: String}, fuel: {type: String}, capacity: {type: Number}, own_weight: {type: Number}, total_weight: {type: Number}, n_reg_new: {type: String, index: true, required: true}, }, ); export default model('info', InfoSchema);
Ростислав ✚
Ты можешь не делить по 15к кодом, монга сама разберется. А делать insertMany сразу хоть на лям
У меня слишко много обектов 11 лямов, не хочу все выгружать в оперативку
Denis
У меня слишко много обектов 11 лямов, не хочу все выгружать в оперативку
Предлагаю попробовать воспроизвести проблему при записи всей пачки одним запросом, почти уверен что ее не будет И смотреть в сторону своего кода, который делит на кусочки, значит неправильно делит
Denis
Смотри на эксепшены, возможно где то валидация не проходит и тп, а в кэтче проглатывается
Ростислав ✚
Предлагаю попробовать воспроизвести проблему при записи всей пачки одним запросом, почти уверен что ее не будет И смотреть в сторону своего кода, который делит на кусочки, значит неправильно делит
Попробую пока 1 лям, и у меня проверка перед записью на количество я в консоли вижу сколько отдаёт и вижу что из 15к 10 ошибок проверок возвращает сам метод insertMany и в том же ответте вижу что удачных 14985
Ростислав ✚
Dmitriy
Ну остальные строковые значения же нормально декодятся, это и странно
проблема как раз в том, что под капотом bson.ObjectId не строка, а набор байт. поэтому как вы говорите вам и надо делать кастомный маршалер для этого типа
Александр
Народ подскажите как подсчитать количество сгруппированых документов?
Aleksandr
$sum: 1
Александр
если быть точнее, то сколько групп документов получилось, а не количество документов в каждой группе
Александр
$sum: 1
Это не то
Александр
obvpublish.aggregate([ { $match: {}}, { $group: { "_id": "$avtorId", } }, ],function (err,docs){ console.log(err,docs) }) docs.length мне нужно это значение, только методом mongo. в колекции 3 млн доков, и если я буду определять велечину полученого массива... Ну в общем не кашерно.
RA-TA-TATA
Подскажите, а в монге реально сделать инъекцию?
RA-TA-TATA
Наркотиков?
Почти. В скл это склинъекция, а в монге есть такое?)
Denis
Почти. В скл это склинъекция, а в монге есть такое?)
Ну условно если ты будешь кидать прямо в монгу body запроса без валидации, и возвращать ответ как есть без валидации - то да
Назар
почему этот код не работает?
Ростислав ✚
Я уже спрашивал но никто не замечал проблем с inserMany(ordered: false) mongoose? Добавляю по 10к скриптом, на каждый проход я вывожу в консоль сколько было передано объектов и смотрю сколько из них не прошли валидацию mongoose по шаблону. Так высчитываю сколько должно было добавить, но числа не сходятся. Не удаляю созданую колекцию и запускаю по новой и появляются новые записи, как они могли не пройти проверку с первого раза и пройти со второго я не знаю. Перед запуском следующей итерации скрипт ждёт ответа от insertMany. В чём может быть проблема?
RapidCodeLab
Всем привет, помогите пожалуйста понять, что я делаю не так есть контейнер с монгой mongodb: container_name: mongodb image: mongo:latest environment: MONGO_INITDB_ROOT_USERNAME: user MONGO_INITDB_ROOT_PASSWORD: password MONGO_INITDB_DATABASE: database volumes: - './data:/data/db' есть код на го mc, err := mongo.Connect(ctx, options.Client().ApplyURI("mongodb://"+user+":"+password+"@"+host+":"+port+"/"+database)) if err != nil { return fmt.Errorf("Mongo connection error: %+v", err) } err = mc.Ping(ctx, readpref.Primary()) if err != nil { return fmt.Errorf("Mongo connection ping: %+v", err) } получаю ошибку на пинге Mongo connection ping: connection() : auth error: sasl conversation error: unable to authenticate using mechanism "SCRAM-SHA-1": (AuthenticationFailed) Authentication failed. Сообственно, если убрать пинг и выполнять любые команды к базе из connection string , результат такой же
RapidCodeLab
ping в go изнутри
Ilya
там на ошибку выбора типа шифрования же жалуется