yopp
Монговцам пора пилить инструменты для OLAP
yopp
yopp
Serhii
Всем привет, подскажите пожалуйста, есть две коллекции (_id, name, lastName and userId, test: [], test1: []) - нужно сделать хитренький запрос который вернет один обьект в котором будет _id, name, lastName, test, test1(из другой коллекции) или лучше просто сделать несколько запросов и смержить два обьекта?
В моем случае lookup не возвращает массивы, он возвращает только часть данных почему-то
yopp
Andriy
3.6
yopp
yopp
3.6
В какой момент происходит «потом»?
Andriy
В какой момент происходит «потом»?
не знаю, я обновляю запрос на любой другой, могу убрать какой то параметр, могу добавить, и оно начинает работать и выдавать правильные результаты, но проходит где то 5 мин, и оно отдает все результаты, пока опять не обновлю запрос
yopp
Гена
Alisher
Всем привет! Подскажите пожалуйста, как лучше сделать поле, выводимое из нескольких других в документе? Например, есть поля {"a": 1, "b": 2}. Нужно c = a+b. Видел несколько вариантов: встроенной функцией на javascript или запросом mapReduce. Либо читать поля и рассчитывать сумму каждый раз. Каковы лучшие практики?
yopp
Serhii
@dd_bb подскажите пожалуйста, есть две коллекции (_id, name, lastName and userId, test: [], test1: []) - нужно сделать хитренький запрос который вернет один обьект в котором будет _id, name, lastName, test, test1(из другой коллекции)
Гена
yopp
Andriy
В mongo shell проблема воспроизводится?
в mongo shell вроде как все ок, когда шлю запрос с php, то есть эта проблема, но там всегда один и тот же запрос, он не меняется, поэтому не думаю что проблема в php
yopp
Andriy
yopp
Нет, на стороне приложения
yopp
Если в шелле проблема не воспроизводятся, то это практически гарантированно проблема у клиента
Serhii
@dd_bb а можно внутри output отфильтровать некоторые значения? Допустим вторая коллекция включает поля которые я бы не хотел видеть в output поле
yopp
Alisher
Считать при обновлении документа
В update запросе, которые обновляют "a" и "b" или можно встроить неявное обновление "c" при изменении "a" или "b"?
Serhii
@dd_bb спасибо
yopp
Serhii
@dd_bb а если к примеру, полей много и я хочу сделать project: true для нескольких полей, а остальные откинуть
Anonymous
Использовать полнотекстовый поиск
в монге FTS тормозной :( а эластик лажа, я 500ГБ буду 2 месяца грузить только.... пока "выкрутился" поставив limit 10. заказчика устроило.... 🙄
yopp
yopp
И на какого рода запросах?
Anonymous
с сортировкой по скорингу. порядки кратные.... типа, ищет lucene за 100мс, монга 10 сек :)
Anonymous
ну это оффтопик, смысл обсуждать? 500ГБ и FTS монга ну вообще никак не вытянет, что смеяться? описанные выше проблемы были даже на 700МБ коллекциях (список названий ЮЛ РФ)
Anonymous
я монгу люблю.... но за другое 😂
yopp
yopp
Но я так понимаю что всё идёт к тому что FTS выпилят вообще
Serhii
@dd_bb подскажите, как избавится от вложенности, к примеру есть field: { a: [], b: [] }, на выходе нужно избавится от поля field, а внутренние поля а и б вынести на верхний уровень
yopp
Serhii
@dd_bb а если к примеру поле [[]], и мне нужно избавится от одной вложенности, тоже с помощью project?
Mike
Всем привет! У товара >150 аттрибутов, стоит ли 150 полей делать или упростить как то часть полей в строку например.
Гена
И как монга может знать когда у нее память хаканчивается?
yopp
yopp
yopp
где _id идентификатор аттрибута
Serhii
@dd_bb я сделал таким образом, это окей? {
$unwind: {
path: '$a’,
preserveNullAndEmptyArrays: true
}
},
{
$unwind: {
path: '$b’,
preserveNullAndEmptyArrays: true
}
}
yopp
yopp
в кеше wt хранятся оригинальные страницы, они сжимаются только когда wt сбрасывает их на диск
yopp
а операционная система кеширует страницы блочного устройства в свободной памяти
yopp
Andriy
Наиболее вероятно что у вас где-то кешируются результаты
у меня большой трафик на сайте и после того как я выполняю этот запрос db.promote_ads.find({approved: true, status: {$nin : ["completed", "stop"]} }),
я выполняю следующий запрос
db.promote_ads.update({ _id: "MY_ID" }, { $inc: { view_count: 1 } }),
это может быть как то связано с тем что оно начинает выдавать мне все результаты с бд?
Mike
где _id идентификатор аттрибута
спасибо, а потом как фильтровать потом? если надо будет клиенту показать лишь с некими аттрибутами? проблем не возникнет? это не дольше будет { 'attrs.Number': 'somevalue} чем {'somefield': 'somevalue'}?
yopp
yopp
запрос будет вида attrs._id $eq <id>
yopp
в 4.2 можно в принципе использовать wildcard индекс. но на мой взгляд вложенный массив документов в одинаковой структурой это более практичный спобос организации
yopp
у вас в итоге будет фиксированная схема у документа
yopp
/me off
yopp
yopp
вы можете в pipeline через $set какие угодно вычисления делать
Alisher
Но это всё таки явный update.
yopp
Да
yopp
У вас ещё есть вариант с (materialized) view, но в вашем случае мне кажется это оверхед
Alisher
Понятно. Спасибо!
yopp
если вы хотите по этому полю искать или сортировать то или при обновлении a||b обновлять c, либо materialized view
yopp
если у вас небольшие выборки где другие поля используются в качестве фильтров и итоговый срез документов не очень большой, то можно вообще считать при чтении
Dmitriy
@dd_bb а подскажите, пожалуйста, можно ли как-то вытащить инфу о дате создания коллекции?
yopp
дата создания файла хранилища
yopp
см в uri в wiredTiger в collStat
yopp
и дальше в dbPath
Dmitriy
ага, спасибо
Антон
Друзья, подскажите, пересекающиеся индексы и должны фэйлить в таких условиях или таки можно что-то подкрутить? compound индексы делать не могу, т.к. запросы очень разноплановые. :( Суть проблемы: есть коллекция (300ГБ, 1млрд++ доков, 1 сервер). поля не особо уникальные, уникальны их сочетания.... поля например: фамилия, имя, отчество, год, месяц, день, ещё что-нибудь.... индексы построены по каждому из полей . если идешь запетрищенко василий петрович 2000 12 31, есно ищет за секунду и меньше. а вот "василий петрович 2000 12" выполняется бесконечно. хотя реально васильпетровичей с др 2000.12" немного. а вот каждого из аттрибутов по отдельности явно миллионы....
аналогичная проблема, слишком много составных индексов. Вчера советовали неопределенный индекс, не дождался пока он построится и в документации указано его ограничение на составной индекс, то есть будет проблема поиска по нескольким полям. Есть возможность использования пересечения индексов? или какой нибудь еще механизм?
Alexey
Все добрый вечер!
Может кто сталкивался с проблемой при конфигурации tls соединения
sudo mongod --tlsMode requireTLS --tlsCertificateKeyFile test-server1.pem --tlsCAFile test-ca.pem
при запуске сервера все ок
но при попытке подключения
mongo --tls --host HOSTNAME --tlsCertificateKeyFile test-client.pem --tlsCAFile test-ca.pem
происходит ошибка
SSL peer certificate validation failed: certificate signature failure
CN ведет на HOSTNAME домен
в X509v3 Subject Alternative Name для серверного сертификата также указан HOSTNAME для dns и реальный ip