Dmitry
Как вариант, можно написать промежуточную прослойку, и в ней описать поведение
yopp
А какой у вас средний размер записи? У вас реплика? Какой write concern вы используете?
Dmitry
Обертку вокруг find? Прокидывать туда generic и модель?
Либо [название файла].d.ts модифицировать, чтобы filter по другому реагировал, либо напишите функцию, в которой параметр filter будет описан по вашему и дальше этот filter в find
Dmitry
Либо [название файла].d.ts модифицировать, чтобы filter по другому реагировал, либо напишите функцию, в которой параметр filter будет описан по вашему и дальше этот filter в find
Либо можно обойтись без функции и решить данную проблему через type / interface и ещё есть различные варианты, вам тупо нужно, чтобы что-то выступило в промежуточном слое.
Yury
нашел тип, который удаляет индекс-сигнатуру из типа)
Yury
Nick
Коллеги, такой вопрос. В пайплайне мне нужно взять по id несколько полей из дургйо коллекции. Сейчас делаю loockup, следующая стадия - беру первый элемент . следующая стадия - addfields, чтобы взять нужные поля. В конце еще удаляю временный элемент. Вопрос. Можно ли это как-то сократить?
можно объединить взятие элемента и вытаскивание нужных данных. Но в целом суть не поменяется. Посмотрите можно ли просто втащить данные из смежной коллекции в доки этой коллекции чтобы избавиться от лукапа вообще, может упростить жизнь
Alexander
можно объединить взятие элемента и вытаскивание нужных данных. Но в целом суть не поменяется. Посмотрите можно ли просто втащить данные из смежной коллекции в доки этой коллекции чтобы избавиться от лукапа вообще, может упростить жизнь
у мегя 5 (!) lookup’ов в одном запросе. сейчас уже точно ничего не поделаешь, но я смотрю и не понимаю как по-другому сделать на монго…. ну, может быть, 1-2 можно было бы убрать…
Muzaffar
здравствуйте ребята можете подсказать как правильно группировать по orgName если у меня структура User : { id: Positions : [ { orgName, orgType } ] }
Muzaffar
такой запрос не совсем является правильным db.user.aggregate([ { $group : { _id : { orgName : "$Positions.orgName"} } } ]);
Nick
такой запрос не совсем является правильным db.user.aggregate([ { $group : { _id : { orgName : "$Positions.orgName"} } } ]);
так не поулчится, сначала надо избавиться от вложенности в массиве. Для этого либо $unwind либо через вытаскивание значения из конкретной позиции в индексе
Muzaffar
так не поулчится, сначала надо избавиться от вложенности в массиве. Для этого либо $unwind либо через вытаскивание значения из конкретной позиции в индексе
вроде этого? db.user.aggregate([ { "$unwind": "$Positions" }, { "$group": { "_id": "$_id", "arr": { "$first": "$Positions.orgName" } }}, { "$group": { "_id": "$arr", }} ])
Nick
вроде этого? db.user.aggregate([ { "$unwind": "$Positions" }, { "$group": { "_id": "$_id", "arr": { "$first": "$Positions.orgName" } }}, { "$group": { "_id": "$arr", }} ])
А у вас всегда есть чтото в позиции и в позициях для одного юзера всегда тоьлко одна организация может быть?
Muzaffar
там массив организаций
Nick
просто в текущем запросе останется тоьлко первая организация
Muzaffar
мне нужно вывести всех организаций которые есть у меня в базе ИНН организации + наименование
Nick
операция разовая?
Nick
важно что не часть функционала, который например на главной странице сайта чтото рисует)
Nick
тогда вам надо чтото вроде $unwind: {}, $group:{ _id: { inn: "$Pos.orgInn", name: "$Pos.orgName" }, }
Muzaffar
а что если оргИнн одинаковый но нейм разный?
Nick
две записи будет
Muzaffar
т.е. будет считать что РФ и Российская Федерация это разные государства?
Nick
потом можете уже сделать например еще группировку по _id.inn и через $sum счетчик запилить и дальше отфильтровать те й которых больше 1 наименования например
Muzaffar
если это текстом - то да
если правильно понимаю то db.user.aggregate([ {$unwind: "$Positions"}, { $group:{ _id: { inn: "$Positions.org_tin", name: "$Positions.org" }, }, }, {$sort:{_id:1}}, { $group: { _id:"$_id.inn", name:{$first:"$_id.name"} } } ])
Nick
если правильно понимаю то db.user.aggregate([ {$unwind: "$Positions"}, { $group:{ _id: { inn: "$Positions.org_tin", name: "$Positions.org" }, }, }, {$sort:{_id:1}}, { $group: { _id:"$_id.inn", name:{$first:"$_id.name"} } } ])
если хочется только одно имя, то можно сразу db.user.aggregate([ {$unwind: "$Positions"}, { $group:{ _id: "$Positions.org_tin", name:{$first:"$Positions.org"} }, } ])
Nick
и сортировка перед группировкой в целом бессмысленна
Muzaffar
тин + нейм нужен при этом при одинаковом тин могат быть разые неймы как с примером РФ )
Muzaffar
какой то сложный этот НоСкул
Nick
в скул это такой же групбай над вложенным запросом с еще одним групбайем
Muzaffar
это просто обычный скул намного удобнее для меня
Muzaffar
кстати @yatoba спасибо за помощь
Nick
это просто обычный скул намного удобнее для меня
а почему решили монгу использовать?
Muzaffar
не мой проект ребята используют и у них возник вопрос решил тоже попробовать что там )
Роман
ObjectID может выдать всего лишь 17 млн уникальных строк?
yopp
79228162514264337593543950336 если точно :)
yopp
2⁹⁶ записей
yopp
Если брать стандарт то внутри одной секунды для каждого процесса возможно 16 777 216 записей, да. Т.е если вы в секунду на одном сервере в одном потоке генерируете ~16 млн записей, то у вас вероятно закончится счетчик. Но вероятность этого крайне низкая, так как 17 млн записей в секунду не так уж и просто сгенерировать :)
Роман
Роман
Ну да, там было написано at one moment...
Роман
Был крайне удивлён как в 24 символах всего 17 млн помещается
Роман
Интересно, может ли сгенерироваться ключ aaaaaaaaaaaaaaaaaaaaaaaa
Роман
2⁹⁶ записей
Спасибо, звучит обнадёживающе
Роман
Пока что не вижу закономерности в секунду или по-немногу, в каком потоке, но это наверное нужно лезть прям в глубокую теорию
Nick
Интересно, может ли сгенерироваться ключ aaaaaaaaaaaaaaaaaaaaaaaa
сгенерироваться нет, т.к. a* это уже отрицательное время в юникстайм, но вы можете руками такой objectid сами сделать
Александр
Привет всем! Кто-нибудь сталкивался с такой ошибкой при запуске через brew? (mac m1)
Александр
Произошло после того, как в mongod.conf добавил security:
Александр
я так понимаю, не у кого не возникало?
Alexandrr
Привет всем! Кто-нибудь сталкивался с такой ошибкой при запуске через brew? (mac m1)
проблема в йосе добавляй в исключения если на локалхосте поднимается либо настраивай фаервол 501 Not Implemented
Евгений
всем привет, можете объяснить что делает эта строчка кода, как понять что в Populate передается результат find? что будет в этом случае?
Yury
Подскажите, пожалуйста, в mongoose метод updateMany синхронный или асинхронный?
Роман
ctrl + click по нему и можно посмотреть какой он и что возвращает
Роман
Если есть слово async соответственно асинхронный
kis kis
Подскажите, у меня есть такая схема import { User } from './../../user/schemes/user.schema'; import { Schema, Prop, SchemaFactory } from "@nestjs/mongoose"; import mongoose, { Document } from "mongoose"; @Schema() export class Course { @Prop() title: string; @Prop() description: string; @Prop() subject: string @Prop() yearsOfStudy: number; @Prop() updatedAt: Date; @Prop() createdAt: Date; @Prop() imgSrc: string; @Prop({ type: mongoose.Schema.Types.ObjectId, ref: 'User' }) courseAuthor: User; } Мне нужно произвести поиск по полю courseAuthor, а именно, по полю fio в пользователя этого курса. Я делал вот такой поиск: const queryNotFields: any = { $or: [ { title: { $regex: dto.q, $options: 'i' } }, { description: { $regex: dto.q, $options: 'i' } }, { subject: { $regex: dto.q, $options: 'i' } }, { 'courseAuthor.fio': { $regex: dto.q, $options: 'i' } }, ] }; return this.courseModel.find(query).exec(); Работает поиск по всем полям, кроме courseAuthor.fio
Pavel
что то документации поплохело, а зеркала уже отключили?
Nick
В отдельной коллекции
Тогда просто так не получится, нужно вытягивать авторов через $lookup и там доп фильтрацию делать, либо вытаскивать на уровень кода через populate() монгусовский и фильтрацию там делать или прям коде
"
How i build google signup api with node js and mongo db .. is any one know? 😔
.
Всем привет что делать если mongodb не подключается?
Роман
норм промисы использовать для обработки всяких операций типа findandupdate?
Роман
а то я массив создаю, код синхронно запускается и он пустой
Alexandrr
норм промисы использовать для обработки всяких операций типа findandupdate?
https://stackoverflow.com/questions/37911838/how-to-use-mongodb-with-promises-in-node-js
Роман
нужно подождать пока данные с бд высосутся
Роман
https://stackoverflow.com/questions/37911838/how-to-use-mongodb-with-promises-in-node-js
Спасибо, как раз сейчас на этой странице сижу)))))
Роман
А нет, не на этой.. на этой https://mongoosejs.com/docs/async-await.html
Роман
Но благодарю
Alexandrr
слишком мало конкретики. что, зачем, для чего и почему начните с нормального описания вопроса
Роман
То есть это нормальная практика?
Роман
Сейчас