yopp
Добрый день, подскажите, как можно посмотреть статистику используемых индексов. Может есть какой то функционал, что бы понять каких индексов не хватает?
Каких не хватает это profiler https://docs.mongodb.com/manual/tutorial/manage-the-database-profiler/ Какие используются это $indexStats https://docs.mongodb.com/manual/tutorial/measure-index-use/
Anonymous
Вопрос, есть запрос который ищет записи в архиве больше или равно заданной даты Но надо как-то найти последнюю запись меньше или равно такой записи но еще с полем frt если оно есть. lte надо юзать, но дальше как -то надо отсортировать и найти первое с frt db.getCollection('archive'). find({_d: { '$gte': new Date('2020-11-20T11:30:10.876Z') }}) Такое не канает db.getCollection('archive'). find({_d: { '$lte': new Date('2020-11-20T11:30:10.876Z') }}). sort({_d: -1}). findOne({ 'frt': { $exists: true }}) пишет findOne не функция
ASPIRIN
такое хочешь?
Dmitriy
Коллеги, кто не спит, подскажите, в чем тут косяк? не срабатывают проджекшены и выводяться все данные вместо указанных полей usersCollection.find( {_id: {$in: userIds}}, {_id: true, login: true, email: true, account: true, password: false}) .toArray();
Anonymous
Всем неспящим ку, кто может подсказать по сортировке, буду признателен
Anonymous
{ "_id" : ObjectId("5fb867c7183ae30e1b16c24f"), "project_id" : "5fb86719cdbd11b8ad600af1", "admin_telegram_id" : 0, "comment" : "Топчик реклама", "on_sale" : true, "conditions" : [ { "advertising_type" : "pinned_ad", "duration" : 144, "price" : 100000, "currency" : "RUB" }, { "advertising_type" : "advertising_in_description", "duration" : 720, "price" : 70000, "currency" : "RUB" } ] }
Anonymous
интересен массив conditions, в нем два объекта с разными advertising_type
Anonymous
запрашиваю подобным образом db.advertisings.find({"conditions.advertising_type":"advertising_in_description"}).pretty()
Anonymous
как можно сделать, что бы монга в массиве первым элементом отдала condition где advertising_type — advertising_in_description ?
Anonymous
буду оч. признателен совету)
Roman
Доброе утро, посоветуйте пожалуйста курс на YouTube по базам?
Dmitriy
Нельзя юзать true и false в одном объекте. Либо true юзать либо false
Пофиг, убрал и все равно. Сработал вариант сделать .project после find но все равно интересно почему вариант выше не сработал
Roman
По монге — MongoDB University
Спасибо большое, за совет)
Яблоко
User.updateMany({_id : userCreds.userId}, {$set: {services : {online:false}}},()=>{ }) Как обновит отдельное поля у объекта, а не перезаписать его полностью ?
🔰ш
Есть документы, у которых есть свойство holders, которое является массивом из объектов holder вида {user, part} Как сделать выборку из всех документов, у которых holder с максимальным part имеет user = userId
Anonymous
Lev
Как найти почему монга жрет 100% цпу?
Lev
mongotop
Это много? Я верно понял?
Lev
read по 2866ms есть
Anonymous
Да, похоже что индексов не хватает.
Lev
Да
Lev
Индекс можно делать наживую?
Anonymous
Да, с { background:true } можно.
Anonymous
В логах запросы не по индексам должны быть видны если что.
Anonymous
Да
Lev
А вот какие поля надо в индекс втыкать... https://www.developer.com/db/indexing-tips-for-improving-your-mongodb-performance.html тут написано что тупо все поля в поиске
Anonymous
Ну если это возможно, то можно и все поля в поиске. Еще есть правило match, sort, range. Т.е. сперва в индексе указываем все поля точного совпадения, потом поля по которым сортируем и потом поля с диапазоном значений.
Anonymous
В твоем случае как я понимаю только сортировка и лимит в 20 первых в условии. Тут достаточно на поле сортировки индекс создать.
Lev
В твоем случае как я понимаю только сортировка и лимит в 20 первых в условии. Тут достаточно на поле сортировки индекс создать.
Да у меня вообще странно, в коде нет лимита на 20) Есть лимит на 200 Мало того у меня два запроса: Один по eventTime desc А другой по serial и eventTime desc eventTime - дата (вроде норм, ISO, 2020-11-09T08:25:51.059+00:00) Но в консоль монго ругается со словами что пытается искать по distinct serial или по eventTime. Странно, что по distinct serial оно не говорит ничего о eventTime, хотя должно.
Lev
Как мне понять, насколько один индекс лучше другого? Насколько монга умная чтобы выбрать лучший индекс? Она ж сама выбирает индекс, как я понимаю. Что если я создам несколько индексов для нее - она сама выберет наилучший вариант и остальные я смогу удалить?
Anonymous
Да, можно создать несколько, монга будет периодически пробовать все индексы-кандидаты и выбирать самый быстрый для данной формы запроса. Потом можно взглянуть на статистику использования индексов и удалить неиспользуемые.
Lev
Наверно по параметрам явно не подходят
Anonymous
А какой индекс в итоге создаешь для примера выше?
Anonymous
Команда на создание индекса так понимаю отработала уже.
Lev
Команда на создание индекса так понимаю отработала уже.
Да, данных там не так много, просто часто дергаем
Lev
Что меня смущает в примере выше, это то, что я в коде не могу найти поиска только по serial. Есть по serial и eventTime. Но не отдельно по serial. (Запросы правда автогенерятся фреймворком, но все же)
Lev
И индексы отдельно на eventTime и на serial - могна использует
Anonymous
Что меня смущает в примере выше, это то, что я в коде не могу найти поиска только по serial. Есть по serial и eventTime. Но не отдельно по serial. (Запросы правда автогенерятся фреймворком, но все же)
Ну на скриншоте и нету поиска по serial, там сортировка по eventTime только, с лимитом. Получается индекс только по eventTime есть, но он не используется в данном запросе?
Lev
Ну на скриншоте и нету поиска по serial, там сортировка по eventTime только, с лимитом. Получается индекс только по eventTime есть, но он не используется в данном запросе?
Да.. запрос по сериал в запрос не попал. Ладно. На данный момент все нормально заработало, а предметно разбираться сядем уже позже, завтра.
Lev
@RaZiELLEiZaR Огромное спасибо за помощь
Владислав
Всем привет. Может кто знает, почему массив далее второго уровня вложения не отображается и не парсится нрмально?
Владислав
Владислав
Переделал в массив объектов, а не просто массив значений. Теперь в браузер нормально парсит
Revival
Подскажите пожалуйста. Каким образом одним запросом обновить, допустим, поле username, а также добавить/редактировать socialLinks элемент? (mongoose) User.findOneAndUpdate( { _id: req.user.id }, { username: "newUserName", // как добавить/редактировать socialLinks элемент? }, { new: true }, (err, doc) => console.log(err,doc) )
Илья
есть модель пользователя {"stats": [{chat: Integer, messages: Integer}], ...} как отсортировать статистику пользователей в определенном чате по messages?
Илья
т.е. в моделе пользователя хранится его статистика по н-числу чатов, надо агрегировать по определенному чату статистику
Lev
Если постоянно делать одинаковые запросы или один и тот же запрос - монга не будет пытаться оптимизировать это? Может даже индекс?
Anonymous
Всем привет. Нужна помощь, оплачиваю. Есть бот в ТГ, он высылает расписание. Для него нужно сделать базу данных на монге. Чтобы база данных была на локалхосте
🚀
Всем привет! Подскажите, пожалуйста, почему mongo в запросе Model.find({_id: {$in: [ids]}}) возвращает масив только с одним документом. Следует учесть что масив [ids] имеет 6 одинаковых айди. Может ли это быть причиной такого поведения? Что-то вроде автоматического distinct
.
подскажите как в mongoose найти по дате, не опираясь на время?
.
мне вот нужно найти по полю, в котором тип Date завтрашний день
.
хоть 23:59 хоть 0:01
Lev
А ведь по идее на любой запрос хорошо бы делать индекс?
Nick
А ведь по идее на любой запрос хорошо бы делать индекс?
зависит от данных, частоты запросов, того как они аффектят ваше ПО и т.д. но много индексов тоже плохо - требуется больше оперативы, замедляется вставка/удаление и в некоторых случаях апдейты
Lev
Но, если на запрос нету индекса - будет долго же.
Nick
бесплатно ничего не бывает, всегда трейдофы
Lev
Как понять, можно ли использовать существущий индекс?
Nick
Но, если на запрос нету индекса - будет долго же.
если нету - то пишите SLA на время ответов ваших сервисов для клиентов, настраиваете мониторинг времен ответов собираете стату, смотрите где вылезаете за SLA и тюните, и тюните не обязательно за счет индексов, а может за счет другимероприятий по оптимизации ПО например
Lev
Например мне надо искать по полю А и Б а так же рядом я иду только по А. Можно ли использовать один составной индекс А и Б? Важен ли для монги порядок? Важна ли сортировка?
Lev
ПО и так заоптимизировано чтобы в базу не лезть
Nick
ПО и так заоптимизировано чтобы в базу не лезть
а может статься что дешевле в базу сходить
Nick
Например мне надо искать по полю А и Б а так же рядом я иду только по А. Можно ли использовать один составной индекс А и Б? Важен ли для монги порядок? Важна ли сортировка?
в частности зачастую хватвет одиночных индексов по основным полям, монга может использовать их комбинации для более сложных запросов. Это не замена составным индексам и может не всегда использоваться, даже если кажется что должно, поэтмоу всегда надо проходиться эксплейном и проверять какие индексы задействуются
Anonymous
Привет, кто-то знает визуализаторы схем монги, типо чтобы показывало схемы, можно было там добавлять в них, короче проектировать
Valery
А компас не умеет?
Максим
А компас не умеет?
там же аналитика. А схему разве там можно нарисовать?