yopp
понаблюдай за orphanCleanupDelaySecs
yopp
в смысле за поведением с низким значением
yopp
дальше интересный вопрос не связано ли это с размером чанка
yopp
и третий вопрос: есть ли проблема на других нодах?
yopp
ключ монотонный?
Nick
Нет, там вообще сказочно ибо по 10% от общей туда долетает
Nick
Ключ монотонный
yopp
одномерный или многомерный?
Nick
Точне он составной, первая ид, вторая собственно реально монотонный номер
Nick
Рассматривал вариант с хешами, но сразу его отбросил, чтото тогда он не подошел
yopp
я правильно понимаю что если сделать пустой чанк из … MaxKey, то он тоже долго балансируется?
Nick
Да
yopp
долго это минуты? :)
Nick
Долго это время того параметра
Nick
Т.к. Он ограничивал
Nick
Я понимаю что ты предлагаешь перекинуть макс диапазон на шард с меньшим колвом данных
yopp
это раз, да
yopp
два попытаться поделить его пополам чтоб данные изначально роутились на менее загруженные шарды
Nick
дак дело в другом, в нем 500Гб допустим, это будет соовтевовать дипазону около процента, а мож и того меньше, относительно общих данных, потому разбивать его смысла особого нет. А перенести да надо
yopp
а пытался искать горячие чанки?
yopp
чтоб их распилить и понести на другие ноды?
Al
а помогите плиз как из массива сабдокументов содержащих каждый ObjectId с ref на другой объект. А получить нужно массив сабдокументов плюс для каждого populate вот этот связанный объект
Al
const UserSchema = mongoose.Schema(
{
name: { type: String, required: true },
profiles: [{
_id: false,
paymentId: { type: mongoose.Schema.Types.ObjectId, ref: "Payment" },
failureCount: { type: Number, default: 0 }
}],
},
{
}
)
Al
const PaymentSchema = new mongoose.Schema(
{
price: { type: Number },
planId: {
type: String,
},
},
{
}
)
Al
Нужно выбрать для данного User все profile и для каждого profile еще данные из Payment
Тут видимо unwind и lookup, а можно ли как то проще? вообще без aggregate?
Al
как нибудь с populate ?
Al
ну что бы получилось
[
{ paymentId: ObjectId1, fauilureCount: 1, price: 100, planId: 3 },
{ paymentId: ObjectId2, fauilureCount: 0, price: 200, planId: 4 },
]
Al
let result = await User.findOne({ _id: ObjectId(this._id) }).populate({ path: "profiles.paymentId" }).exec()
Al
вот так получилось достатать примерно что нужно. Ну а как сделать this.populate ??
Al
User.findOne({ _id: ObjectId(this._id) }) что бы вот этот поиск отбросить, тк и так экзмепляр User у меня уже есть..
Al
let result = await this.populate({ path: "profiles.paymentId" }) оказывается без exec надо.. теперь выбрать только нужные поля..
AstraSerg
Al
AstraSerg
но в данном случае ведь они излишни?
Вы уверены что populate будет эффективнее? Подозреваю, что он вытащит всё из базы и начнёт джойнить. Но с этим вам лучше в чатик по монгусу сходить. Здесь можем помочь по агрегатам.
Al
а где чат по монгусе?
Al
в режиме отладки я вижу вот что payments.find({ _id: { '$in': [ ObjectId("5c76b26e7406a019c0eca428"), ObjectId("5c76b28d7406a019c0eca429") ] } }, { projection: { gwId: 1 } })
Al
вроде бы чистый find
AstraSerg
Al
вот мой функция
Al
Al
вот отладка и результаты. в них именно то что мне нужно
Al
DeprecationWarning: Custom inspection function on Objects via .inspect() is deprecated вот это только напрягает.. хотя я вроде читал что это известная штука
Al
В целом норм запрос?
Roman
Скажите, можно ли создать глобального админа для всех баз?
Roman
Забейте.
Vladimir
Господа, никто не поделится крякнутой Studio 3t?
yopp
Viktor
а робо3т уже закопали совсем?
Vladimir
Ну я на робо, но студия няшнее
yopp
Но похоже опять запилят один сломанный релиз и забьют ;)
Viktor
Vladimir
robo3t работает, от как я понял - от разрабов студии
yopp
Vladimir
И позиционируют его как посмотри что может студия и сиди на своём недопиленном роботе
Dmytro
ребят подскажите пожалуйста как сделать запрос по определенному скоупу айдишников, но их может и не быть, в таком случае нужно сделать запрос по всем записям, может что то туплю, но в гугле ничего не нашел по этому поводу
Dmytro
и вообще реально ли такое сделать в запросе, или нужно логику пилить в самом приложении для этого
yopp
Al
Eugene
Roman
Скажите плиз, в mongo shell есть такая команда?
*.
Nick
а команда где?
Nick
но это не команда, команда это как правило ключевое слово
Nick
может вы опишите пробле?
Roman
Мне нужно настроить права для пользователя для БД.
У меня есть мануал (список команд которые должны быть доступны для юзера).
В этом мануале, практически перед каждой командой встречается такая запись.
> *. (admin)
> db.adminCommand( { listDatabases: 1 } )
Вот я и не могу понять, что это за ерунда такая. Ладно db.adminCommand - это понятно, в mongodb доке есть, все хорошо. Но что такое *. (admin) ?
Nick
db - переменная
Nick
это не команда
Nick
команда это listDatabases
Dmitriy
ребят, привет! подскажите, пожалуйста, возможно ли как-то сделать поиск по regex по полю содержащему ObjectId, без введения дополнительного стрингового поля дублирующего в себе значение из поля ObjectId?
Nick
внимание вопрос, а зачем вам искать в ObjectId?
Dmitriy
ну если совсем просто, то у меня стоит задача сделать quick filter, т.е. реализовать "полнотекстовый" поиск по группе полей. данная группа полей в том числе на данный момент включает поле _id
Dmitriy
собственно сейчас вопрос для меня и стоит в том, чтобы мне кто-то еще подтвердил, что это невозможно и я ушел в заказчика объяснять что или нет или нужны доработки
Nick
ктото не видел в глаза содержимое ObjectId
Nick
там нечего искать
Dmitriy
ну не скажите, надо найти транзакцию по идентификатору, я помню что в ней есть 003a