Dmitriy
потому что на текущий момент это выглядит как лютый архитектурный треш
Александр
Dmitriy
зачем вам нужна временная коллекция то? 😳
ну вы сами подумайте, вы делаете несколько джоинов + временную коллекцию и хотите чтобы это работало быстро
Dmitriy
мало того что оно на уровне базы у вас уже тормозит так вы еще и все данные по http гоняете
Александр
Dmitriy
ладно, вы не слышите, ваше решение делайте без группировки - оно у вас быстро работает
Александр
видимо так. хотел как лучше, а вот смысл, данные об аккаунте хранить в документе?
Dmitriy
не факт, все сильно от задачи зависит, например в задаче коллеги я бы картинки положилбы в коллекцию авторов в массив и тем самым избавился бы от одного лукапа минимум
Dmitriy
но сильно зависит от объемов данных
Александр
Dmitriy
Александр
воти получается мне нужен временный документ с определенной продолжительностью жизни и надо вывести витрину, где ссыока на документ, ссылка на автора + фото
Александр
теперь к витрине добавилась задача, надо чтобы в ней было по одному последнему документу каждого автора
Dmitriy
нет, не получается, получается пока только то что вы 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 схема, которая задает структуру документа
Igor
У меня есть такая схема заказа, поле headsets является довольно сложным объектом, как мне спроектировать схему под такую структуру?
Dmitry
Ivan
Подскажите можно как-то обновить несколько документов одним запросом
К примеру, разным пользователям увеличить баланс на разное значение
{“user_id”: 1}, {“$inc”: {“balance”: +2.2}}
{“user_id”: 2}, {“$inc”: {“balance”: +0.2}}
{“user_id”: 3}, {“$inc”: {“balance”: +1}}
Nick
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
Нужен внешний источник уникальных ид
Denis
Anton
Вообще ид необязательно числовой, стоит ли использовать в качестве айдишника ObjectID?
Anton
Denis
Anton
Это не ренейм, это аннотация такая, пишу на го
Anton
Аннотация для json - id, для монги - _id
Id string `json:"id" bson:"_id"`
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);
Denis
Ростислав ✚
Denis
Смотри на эксепшены, возможно где то валидация не проходит и тп, а в кэтче проглатывается
Ростислав ✚
Ростислав ✚
Александр
Народ подскажите как подсчитать количество сгруппированых документов?
Aleksandr
$sum: 1
Александр
если быть точнее, то сколько групп документов получилось, а не количество документов в каждой группе
Александр
Aleksandr
Александр
obvpublish.aggregate([
{ $match: {}},
{
$group: {
"_id": "$avtorId",
}
},
],function (err,docs){
console.log(err,docs)
})
docs.length мне нужно это значение, только методом mongo. в колекции 3 млн доков, и если я буду определять велечину полученого массива... Ну в общем не кашерно.
Dmitriy
Александр
RA-TA-TATA
Подскажите, а в монге реально сделать инъекцию?
Vova
RA-TA-TATA
Наркотиков?
Почти.
В скл это склинъекция, а в монге есть такое?)
Назар
почему этот код не работает?
Ростислав ✚
Я уже спрашивал но никто не замечал проблем с inserMany(ordered: false) mongoose? Добавляю по 10к скриптом, на каждый проход я вывожу в консоль сколько было передано объектов и смотрю сколько из них не прошли валидацию mongoose по шаблону. Так высчитываю сколько должно было добавить, но числа не сходятся. Не удаляю созданую колекцию и запускаю по новой и появляются новые записи, как они могли не пройти проверку с первого раза и пройти со второго я не знаю. Перед запуском следующей итерации скрипт ждёт ответа от insertMany. В чём может быть проблема?
RapidCodeLab
Oleg
Всем привет, помогите пожалуйста понять, что я делаю не так
есть контейнер с монгой
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 , результат такой же
Проверьте логин, пароль, строку коннекта, если в пароле есть @ то его надо urlencode
Ilya
там на ошибку выбора типа шифрования же жалуется
RapidCodeLab