@MongoDBRussian

Страница 104 из 342
Artem
01.07.2017
11:58:23
Проблема в том, что индекс нужен для двух языков

yopp
01.07.2017
12:26:06
Проблема в том, что индекс нужен для двух языков
Проблема в том, что надо внимательно читать ссылки. https://docs.mongodb.com/manual/tutorial/specify-language-for-text-index/#create-a-text-index-for-a-collection-in-multiple-languages

Artem
01.07.2017
12:27:14
Я внимательно читал ссылки, но схемы очень разные

yopp
01.07.2017
12:31:48
Да, тебе надо поменять схему. А ты чего ещё ожидал?

Google
Timur
01.07.2017
12:36:08
С текстовым индексом "полнотекстовый" поиск не выйдет же.

yopp
01.07.2017
12:38:42
Полнотекстовый поиск != полнотекстовый индекс.

Если нужно искать по всему документу то это text и $**

Если нужен полнотекстовый индекс для конкретных атрибутов, то просто индекс. Но не размер поля ограничен 1024 байтами.

В любом случае схема <lang>.<field> не индексируется нормально.

Плюс это банально не эффективно (если вынести за скобки вопрос индексации, то я не понимаю почему не <field>.<lang>)

Банально как фильтровать по наличию поля?

Все языки в запросе указывать?

Dmitry
01.07.2017
12:46:44
Artem
01.07.2017
12:47:09
Фильтруем только под конкретный язык всегда

Dmitry
01.07.2017
12:47:21
у меня была похожая проблема, решили синхронизацией данных с ES, а там несколько разных индексов с разными настройками по одному и тому же полю

ну то есть там язык, case sensitive/insensitive + со спецсимволами индексы

монга мне показалась в этом совсем не сильна

Google
Artem
01.07.2017
12:48:57
Благодарю всех за советы, присмотрюсь к ES

Dmitry
01.07.2017
12:49:57
ES кстати тоже так себе, я так понял хранить там что-то не лучший выбор, мы поднимаем только для поиска и данные там просто дублируются. Но вроде самое простое решение

Timur
01.07.2017
12:58:37
А как вы данные синхронизируете монги с эластиком?

Алексей
03.07.2017
14:49:03
не любовь к парням из монги.

или системд не знаю уж кому адресовать нелюбловь.

монга 3,4,5 стартует раньше чем стартует сеть на хосте

в [Unit] After=network.target есть. но этого мало.

так вот # /etc/systemd/system/mongod.service.d/override.conf [Unit] After=network.target Requires=network.target стартует после сети

yopp
03.07.2017
14:59:25
сделай пуллреквест

ты где с этим столкнулся?

Dmitry
03.07.2017
18:12:10
всем привет. У меня есть две коллекции: папки и файлы. Я хочу чтобы отныне когда я запросил коллекцию папки, у них было свойство count, где отдавалось бы реальное текущее значение количества файлов (тобишь делается выборка из коллекции файлов, в которых идентификатор папки равен той папке). Как лучше сделать эту задачу? ЦЕль: получить список сущностей папок, которые бы показывали текущее количество "вложенных" в них файлов.

буду рад если поможете

Алексей
03.07.2017
18:29:42
Dmitry
03.07.2017
19:57:54
Materialized path. Папка == файл
у меня parent references по сути

вот я хочу что-то тут придумать

есть folders: { { id: 1, name: 'Folder 1' }, { id: 2, name: 'Folder 2' } } и есть коллекция files: { { id: 1, folderId: 1, name: 'File1' }, { id: 2, folderId: 1, name: 'File 2' }, { id: 3, folderId: 2, name: 'File 3' } } Нужно чтобы в результате при запросе я получил что-то типа: { { id: 1, name: 'Folder 1', filesCount: 2 }, { id: 2, name: 'Folder 2', filesCount: 1 } }

немогу нагуглить хоть убей

Google
Dmitry
03.07.2017
20:05:24
буду рад если поможете

Bogus
03.07.2017
20:45:44
не уверен + говнокод var result = []; files.find((files) => { folder.find((folders)=>{ folders.map((folder)=>{ files.forEach((file)=>{ let i = 0; if(files.folderId == folders.id) { i++; }; }); result.push(new Object('id' : folder.id, 'name' : folder.name, 'filesCount' : i)); }); }); });

Enjoy the
03.07.2017
20:59:17
>не уверен + говнокод Я так всю жизнь работаю

Bogus
03.07.2017
21:06:35
жиза)

yopp
04.07.2017
09:15:25
немогу нагуглить хоть убей
А оно на уровне монге и не решается. Можно конечно джойн сделать, но это плохой дизайн

Основная ошибка — разделить файлы и директории в разные коллекции, тогда как сами сущности используются вместе.

Если объединить их в одну коллекцию, такой вопрос будет решаться агрегацией.

Хотя если уже объединять, то лучше уж materialized path использовать. Это известное решение, с которым всё понятно.

Dmitry
04.07.2017
10:02:50
А так можно добавить isFolder: true || false но...хз на сколько правильно

yopp
04.07.2017
10:03:50
Если ты не хочешь слышать совета, то ¯\_(ツ)_/¯

Dmitry
04.07.2017
10:04:07
yopp спасибо. Я подумаю, учту.

yopp
04.07.2017
10:04:17
Правильно писать в монгу так, как ты оттуда будешь читать.

Идеально свести всё к простым запросам без агрегаций.

За исключением тех редких кейсов где записи на порядки больше чем чтения.

Timur
04.07.2017
10:11:28
Столкнулся с проблемой: со временем растет CPU у процесса монги на праймари в реплика сете. С чем это может быть связано, куда копать? v3.4.5 wiredTiger



yopp
04.07.2017
10:11:58
Смотреть на остальные графики

Воткнуть https://github.com/y8/mongo_collection_exporter

Dmitry
04.07.2017
10:14:14
Идеально свести всё к простым запросам без агрегаций.
Деревья хранят смотрю в одной коллекции с указанием на родителя в моем случае

Google
Dmitry
04.07.2017
10:14:31
Придется всё-таки переезжать в одну коллекцию

Погуглю конечно еще

Спасибо

Timur
04.07.2017
10:31:02
Блин, индексы забыл добавить на одну коллекцию. Данные растут, а там фулл скан гоняет. Помогло посмотреть на другие графики)

Алексей
04.07.2017
14:34:36
@dd_bb mon_1 | D, [2017-07-04T14:33:10.089868 #6] DEBUG -- : MONGODB | ххх:27017 | admin.listDatabases | STARTED | {"listDatabases"=>1} и висит. чо хочет ?

ох | local.find | SUCCEEDED | 273.809597s

yopp
04.07.2017
14:36:18
:)

Ответ на запрос хочет!

База перегружена?

Или сеть?

Алексей
04.07.2017
14:39:06
оба нет

mongo_scrape_duration_ms 294703

ох

ага второй и последующие запросы уже лучше

yopp
04.07.2017
14:40:34
ааа

это экспортер

интересно

Алексей
04.07.2017
14:41:15
mongo_scrape_duration_ms 15380

yopp
04.07.2017
14:41:27
а там много коллекций?

Google
Алексей
04.07.2017
14:41:45
182тысячи метрик....

с этим наверное чтото надо делать

yopp
04.07.2017
14:42:14
182 тысячи коллекций?

или ты про какие метрики?

если ты про метрики экспортера, то это нормально. поставь раз в минуту скрейп

даже раза в пять минут в среднем хватает

Алексей
04.07.2017
14:43:52
метрик именно

раз в минуту... ок

yopp
04.07.2017
14:44:14
если оно чаще, если реже — то не трогай

Алексей
04.07.2017
14:44:29
я когда думал ща "поподробнее" на монгу позырю не ожидал что будет настолько поподробнее

yopp
04.07.2017
14:44:37
:))))

Страница 104 из 342