@MongoDBRussian

Страница 224 из 342
Ilya
12.04.2018
08:54:41
yopp
12.04.2018
08:54:54
Но вам не нужна агрегация

Ilya
12.04.2018
08:55:40
=) а как файндом обойтись?

Google
yopp
12.04.2018
08:55:42
Вам дешевле на клиенте отбросить поддокументы

Ilya
12.04.2018
08:55:49
ааа ну вооот

просто там поддокументов тысячи

Nick
12.04.2018
08:56:23
просто там поддокументов тысячи
а сколько из них отфильтрются по size > 10? процентов 50 хотя бы наберется?

Ilya
12.04.2018
08:56:41
да там отфильтруется 99%

в плане откинутся

а 1 % будет нужно вывести

поэтому и не хотелось тащить их все

в итоге пока остановились на хранимке которая items фильтрует после фаинда

Nick
12.04.2018
08:57:35
да там отфильтруется 99%
99% элементов внутреннего массива?

Peter
12.04.2018
08:57:42
Время исполнение в explain в аггрегатке нету, даже в 3.6 немогу найти. И как я понимаю нету способа посмотреть сколько реально исполняется агрегатка?

Nick
12.04.2018
08:58:41
тогда может имеет смысл сравнит ьчто по скорости будет лучше AF или на клиенте

Google
Ilya
12.04.2018
09:00:18
в общем просто я думал что вдруг я не знаю какой то простой фишки а в монге она есть и мне похдходит - похоже что все норм, будем тестировать дальше)

yopp
12.04.2018
09:01:15
arrayFilter завезли только для write операций

https://docs.mongodb.com/manual/reference/operator/update/positional-filtered/#up._S_[<identifier>]

Гены в своём репертуаре. ;) используй db.coll.explain(“executionStats”).aggregate(...) а не db.coll.aggregate([], {explain:true})

в общем просто я думал что вдруг я не знаю какой то простой фишки а в монге она есть и мне похдходит - похоже что все норм, будем тестировать дальше)
Ммм. Ася Камски в твиттере говорит что AF это новый find и предлагает $filter. Но в этом случае критически важен порядок пайплайна в AF: 1) $match: name eq Z & items.size gte 10 2) $skip X 3) $limit Y 4) $filter items.size

Ilya
12.04.2018
10:14:03
то есть именно в 3.6 должно работать?

yopp
12.04.2018
10:14:34
3.2+

https://docs.mongodb.com/manual/reference/operator/aggregation/filter/

Peter
12.04.2018
10:17:44
”executionStats" : { "executionSuccess" : true, "nReturned" : 1, "executionTimeMillis" : 0, "totalKeysExamined" : 0, "totalDocsExamined" : 1, "executionStages" : { "stage" : "COLLSCAN", "nReturned" : 1, "executionTimeMillisEstimate" : 0, "works" : 3, "advanced" : 1, "needTime" : 1, "needYield" : 0, "saveState" : 1, "restoreState" : 1, "isEOF" : 1, "invalidates" : 0, "direction" : "forward", "docsExamined" : 1 } }

executionTimeMills 0 ? это типо меньше милисекунды?

yopp
12.04.2018
10:22:31
имеется ввиду filter в project применить?
Да. Но критически важно это делать после skip и limit

Тогда трансформироваться будут только документы из «текущей страницы»

По ссылке твой пример в общем-то

executionTimeMills 0 ? это типо меньше милисекунды?
Да. Всего 1 документ и 3 юнита работы.

Ilya
12.04.2018
10:23:13
да вот в том то и проблема что как только я добавляю блок skip - то меня уже время выполнения не устраивает

Ilya
12.04.2018
10:23:28
=)

Google
yopp
12.04.2018
10:23:51
Покажи пайплайн

Очень желательно в gist.github.com

Ilya
12.04.2018
10:35:13
Покажи пайплайн
так, похоже по size индекса небыло сейчас еще потестирую)

yopp
12.04.2018
10:38:18
db.getCollection('scores').aggregate([ {$match: {"grades.score": {$gte: 10}}}, {$skip: 21000}, {$limit: 10}, { $project: { grades: { $filter: { input: "$grades", as: "item", cond: { $gte: [ "$$item.score", 10 ] } } } } } ])

"executionTimeMillis" : 39,

без индексов

это датасет с оценками ресторанов

scores.count() 25360

Ilya
12.04.2018
11:20:49
во первых спасибо

Evgeny
12.04.2018
11:21:23
Это пахнет началом цикла статей где-нибудь)

Ilya
12.04.2018
11:21:39
во вторых очень здорово про addFields я чет не догадался

Ilya
12.04.2018
11:21:49
с индексами да это я накосячил

вроде сейчас все работает как надо)

yopp
12.04.2018
11:24:21
Тьфу,.

Короче, я тям уже три раза ошибся

Короче, если не делать условия по borough, то в этом случае монга для skip/limit будет делать FETCH всех документов которые попали в условие

Хм. Хотя оно и так делает FETCH, даже если и сортировка есть и в условии нет вложенных документов

Пойду ещё кофеином закинусь

https://docs.mongodb.com/manual/reference/method/cursor.skip/#pagination-example

Google
yopp
12.04.2018
11:40:33
Но вообще такие оптимизации нужны если будет очень больно на очень больших объёмах



Admin
ERROR: S client not available

yopp
12.04.2018
12:12:38
Там аккурат MDBLocal в мюнхене, где Ася Камски (из монги, ведёт http://www.kamsky.org/stupid-tricks-with-mongodb и http://www.askasya.com) сейчас рассказывает про AF. Жаль трансляции нет :(

В недрах mongodb.com есть раздел со старыми кейноутами. Например https://www.mongodb.com/presentations/diagnostics-and-debugging-3-0-the-return-of-sherlock-holmes. Можно даже сказать что благодоря её выступленям, меня потянуло в глубокое копание в монге. Она очень клёвая!

yopp
12.04.2018
14:00:07
О. Слайды есть https://github.com/asya999/mdbw17

Анатолий
12.04.2018
15:19:03
привет. вопрос - как такое может быть - удалил документы из коллекции, но скрипт из крона может их находить?

где то надо кэш почистить?

yopp
12.04.2018
15:21:14
Реплика сет или standalone?

Dimanius851
12.04.2018
15:38:25
2018-04-12T15:35:59.293+0000 E QUERY [conn5] Plan executor error during find command: FAILURE, stats: { stage: "PROJECTION", nReturned: 0, executionTimeMillisEstimate: 20, works: 4828, advanced: 0, needTime: 4827, needYield: 0, saveState: 37, restoreState: 37, isEOF: 0, invalidates: 0, transformBy: { created: 1, description: 1, img: 1, image: 1, name: 1, owner: 1, updated: 1, users: 1, views: 1, likes: 1, reference: 1 }, inputStage: { stage: "SORT", nReturned: 0, executionTimeMillisEstimate: 20, works: 4828, advanced: 0, needTime: 4827, needYield: 0, saveState: 37, restoreState: 37, isEOF: 0, invalidates: 0, sortPattern: { views: -1 }, memUsage: 33568596, memLimit: 33554432, inputStage: { stage: "SORT_KEY_GENERATOR", nReturned: 0, executionTimeMillisEstimate: 10, works: 4827, advanced: 0, needTime: 2, needYield: 0, saveState: 37, restoreState: 37, isEOF: 0, invalidates: 0, inputStage: { stage: "COLLSCAN", filter: { $and: [] }, nReturned: 4825, executionTimeMillisEstimate: 0, works: 4826, advanced: 4825, needTime: 1, needYield: 0, saveState: 37, restoreState: 37, isEOF: 0, invalidates: 0, direction: "forward", docsExamined: 4825 } } } }

Dimanius851
12.04.2018
15:45:24
спасибо

yopp
13.04.2018
08:58:53
Если вы из РФ, рекомендую заранее озаботится вариантом обхода блокировки.

❗️Суд постановил заблокировать телеграм.

Artem
13.04.2018
09:02:57
да затрахаюццо блокировать))))

Artur
13.04.2018
09:05:11
попадали все прокси уже

yopp
13.04.2018
09:05:25
И @socks5_bot

Ivan
13.04.2018
09:05:47
а этот живой @TgProxyBot

Google
Mikhail
13.04.2018
09:05:51
И @socks5_bot
Хз. Я попробовал через него. Ничего не вышло



yopp
13.04.2018
09:08:16
Насколько я понимаю сейчас боты упираются в лимиты, плюс везде наплыв из-за публикаций в сми

Rocket
13.04.2018
09:14:36
Одна машина не выдерживает.

User ?
13.04.2018
09:17:54
можно ссылку на мускул чатик?

Mikhail
13.04.2018
09:18:20
User ?
13.04.2018
09:20:49
thx

Oleg ?
13.04.2018
09:46:14
Ребят, привет. Подскажите а юзает кто монгу в big data ? Поделитесь впечатлениями

Slava
13.04.2018
09:46:45
а что вы подразумеваете под бигдата? ну т.е какие объемы?

Oleg ?
13.04.2018
09:47:48
больше 1 петабайта

Nick
13.04.2018
09:50:25
для хранения норм, но галвнео планирвоать доабвление новых шардов примерно за полгода

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