yopp
И приходится каждый раз в чяте, который открыт в том-же окне, где у меня _аутентифицированная_ сессия ещё раз каким-то дебильным способом проходить аутентификацию
yopp
например этими чёртовыми номерами заказов
Nick
а если в цепочке ест ругие конторы? например та же доставка, которые отчитываются по номерам заказов, как с ними быть? или это типа главное клиента не касается там хоть гуиды ебошьте?
yopp
я же написал уже
yopp
«хороший номер заказа это многобукв, которые решают проблемы в жизненом цикле выполнения этого заказа.»
Nick
это чисто так подытожить
Sardor
Ребят, все же, что тут может быть не так? Не изменяет объект в БД. Вот совсем. В коллекции members точно есть объект с userId: ctx.match[1] (вижу в компассе) и у него точно есть ключ refs, который является массивом. Но ничего не происходит. db.collection('members').updateOne({userId: ctx.match[1]}, {$addToSet: {refs: ctx.chat.id}}) *пробовал вместо $addToSet и $set и $push, ничего не сработало. **Ошибок нет
Nick
если ничего не работает значит в ctx.match[1] содержится нечто другое
Nick
либо по значению либо по типу
Sardor
если ничего не работает значит в ctx.match[1] содержится нечто другое
Вывожу в консоль, там мой айди: 62253745 В бд тоже самое
Sardor
точняк, тип. Сейчас проверю, спасибо
Nick
стринга число? и там и там7
Sardor
стринга число? и там и там7
действительно, в типе и была разница:) спасибо!
Aleksandr
Встал тут интересный вопрос. Есть коллекция. Примерно 3 млн. документов. Занимает около 190 Гб места. Вроде бы все нужные индексы стоят. Раньше (когда записей было 2-2.5 млн.) поиск отрабатывал где-то в приделах 30 секунд. Были таймауты, но редко. Сейчас же сплошные таймауты. Собственно вопрос - работа такой коллекции на одном инстанце реальна? Или уже надо шардить?
Nick
30 минут?
Aleksandr
30 минут?
Секунд. Поправил.
Nick
а поиск какого вида?
Aleksandr
а поиск какого вида?
Поиск относительно сложный. По ряду полей. И заметил закономерность - если в результате будет немного документов - то укладывается в 30 секунд. Если большое число в результате - то нет.
Nick
а вы мониторите нагрузку на серваке с бд? что там по нагруженности по дискам цпу? и сколько оперативы?
Nick
пока складывается ощущение, что индексы не влезают в память и поиск генерирует постоянные чтения с диска
Aleksandr
а вы мониторите нагрузку на серваке с бд? что там по нагруженности по дискам цпу? и сколько оперативы?
К сожалению мониторинга как такового нет. Насчет оперативки тоже не скажу.
Nick
тогда начните с этого, а потом будет с чем работать
Aleksandr
Пока я по статистике вижу что индексов на 2.8 Гб.
Nick
посчитать сколько их, сколько оперативы, как много данных выбирается при запросе и сколько для них нужно места
Nick
и сделать запас сверху раза в полтора
Nick
кстати а вы explain используете для отлаживания запросов?
Aleksandr
кстати а вы explain используете для отлаживания запросов?
Планируем 😊 К сожалению такая ситуация - что кроме приложения на PHP и подключения через Genghis - никаких других доступов к базе нет
Aleksandr
посчитать сколько их, сколько оперативы, как много данных выбирается при запросе и сколько для них нужно места
Очень похоже на мой случай. Резко выросли данные в принципе (а значит и индексы). И собственно увеличилось число записей в результатах запросов
Nick
самое простое что можно сделат ьв таком случае это выполнить эексплейны и посмотреть нет ли сканов коллекций https://docs.mongodb.com/manual/reference/method/cursor.explain/
Nick
и понять какие из ваших индексов реально используются, может часть из них можно будет поудалять
Nick
ну и надо разбиратсья с бд
Alexander
парни, напомните, плиз, если я в модели монгуса использую хук pre.save, а ниже подключаю плагин, который тоже имеет хук pre.save, кто кого победит? или будут работать независимо?
Alexander
я пока разгребаю г-код...
Alexander
но, в принципе, решение нормальное, если учесть, что в модели я сам пишу хуки, а далее могу навесить модули, которые тоже используют те же хуки
Nick
а что делается в этих хуках?
Roman
Доброго дня! Есть такой документ, как на картинке. Все не могу понять как работать со вложенными объектами. Нужно выбрать все доки, где followDates на 2018-12-14 содержит элемент массива "test".
Roman
db.getCollection('profiles').count({ "followDates": { "2018-12-14": "test" } })
Roman
так естесна не работает
Roman
короче все вложенные всегда строкой через точку
Roman
в любом случае
Roman
так понимаю?
yopp
используйте dot notation https://docs.mongodb.com/manual/core/document/#dot-notation в вашем запросе условие звучит как полное совпадение значения аттрибута
Bandikoot
ага
Roman
ну и это работает, спасибо
yopp
Т.е. вы хотите посчитать все документы где значение followDates равно {"2018-12-14": "test»}
Roman
сейчас вычитаю эту доку, чтобы не тупить 🤔
yopp
ваше условие звучит именно так
Roman
и чтобы в нем был элемент test как в js: arr.indexOf('test') !== -1
Roman
но это все равно будет работать, по примеру от Bandikoot
Roman
монго именно так и ищет в массиве
yopp
нет, не будет
Roman
сейчас проведу тест, отпишу сюда
Bandikoot
нет, не будет
ну почему же, если в массиве "2018-12-14" найдётся хотя бы один элемент со значением test, то весь документ вернётся
yopp
потому что его условие звучи как значение поля 2018-12-14 в аттрибуте followDates равно test
Roman
вот с таким доком работает, а мне это и нужно
Bandikoot
вероятно, это какой-то синтаксический сахар для запросов
yopp
а, если вам надо _любой_ элемент то, да, я не прав.
Bandikoot
можно и явно указать перебор массива через $elemMatch
Roman
спасибо большое!
yopp
если вам нужен элемент по индексу, то надо через dot notation ещё и индекс указать
yopp
массивы в bson это тот-же документ, только ключи — индекс элемента
Roman
массивы в bson это тот-же документ, только ключи — индекс элемента
значит я смогу и их выбирать через точку? .0 например?
yopp
да
Roman
хорошо, спасибо
yopp
https://docs.mongodb.com/manual/reference/operator/query/eq/#array-element-equals-a-value
yopp
в целом этот раздел стоит почитать
Maik
Всем доброго дня, подскажите какими инструментами можно мониторить нагрузку на mongodb. до версии 3.6 мы делали это через http оснастку.
Артём
Долго вообще mongodb осваивается? CRUD с коллекциями достаточно или что еще почитать/посмотреть?