
yopp
01.06.2018
13:12:22
Ну тогда в условие запроса просто добавьте условие ($fieldA - $fieldB) gte X

Maksim
01.06.2018
13:13:38
хм

yopp
01.06.2018
13:13:39
До тех пор пока у вас duration будет константой в условии, вы можете обходится условием.
Если у вас duration будет в документе, надо будет через aggregation framework уже

Google

yopp
01.06.2018
13:14:33
Кажется. Возможно я с другим кейсом путаю ?

Maksim
01.06.2018
13:15:00
find({"timestamp": {"$gte": ISODate("2018-05-31T00:00:004Z"),"$lt": ISODate("2018-06-02T00:00:004Z")}}) достаточно сюда добавить получается ?
еще условие

yopp
01.06.2018
13:16:03
У вас получается два условия. С логической операцией И (и дата в диапазоне и длительность события)
Но в монге условия по нескольким полям сразу объединяются через И

Maksim
01.06.2018
13:23:56
оО попробую изучить вопрос
постиг магию агреации в итоге. осталось постичь $gte
db.tg.aggregate(
[
{$match: {"timestamp": {"$gte": ISODate("2018-05-31T00:00:004Z"), "$lt": ISODate("2018-06-02T00:00:004Z")}}},
{$project: {duration: {$divide : [{$subtract: ["$clear_timestamp","$timestamp"]}, 1000]}}}])
запрос отработал
как теперь фильтрануть еще по duration )

Bandikoot
01.06.2018
14:37:30

Maksim
01.06.2018
14:42:14

Google

Bandikoot
01.06.2018
14:42:52
с точки зрения синтаксиса, aggregate принимает на вход массив
у вас в массиве 2 элемента сейчас:
{$match : ... },
{$project : ...}
вам нужно:
{$match : ... },
{$project : ...},
{$match : ... }
aggregate представляет собой условный pipeline, как в unix: выхлоп одного блока (отобранные или модифицированные документы) передаются на вход следующего

Maksim
01.06.2018
14:49:29
но такая конструкция сильо замедлит обращение в базе ?

Bandikoot
01.06.2018
14:51:46
медленно или быстро — зависит от ваших требований. попробуйте выполнить и решите для себя, устраивает ли скорость выполнения и будет ли изменяться в перспективе

Maksim
01.06.2018
15:01:12
понятно
я думал можно в project использовать $gte
спасибо большое
познал мастрество агреации
db.tg.aggregate(
[
{$match: {"timestamp": {"$gte": ISODate("2018-05-31T00:00:004Z"), "$lt": ISODate("2018-06-02T00:00:004Z")}}},
{$project: {duration: {$divide: [{$subtract: ["$clear_timestamp", "$timestamp"]}, 1000]}}},
{$match: {"duration": {"$gte": 300}}}
]
)
вот такая загагулина вышла
только вот ньюансы вышел %(
при таком запросе мне возвращается {u'duration': 540.0, u'_id': ObjectId('5b11470398601c0f79bde558')}
а хотелось бы весь вывод %( что-то пошло не так

Bandikoot
01.06.2018
15:28:18
$project, собственно, проецирует только указанные поля в документах. обычно им отсекают ненужные

Maksim
01.06.2018
15:29:11
хм

Bandikoot
01.06.2018
15:30:54
условно, если у вас есть документ из 100500 полей, а вам нужны только date и time, например, то
{
$project : {
_id : 0
date : 1,
time : 1
}
}
прокинет на следующую стадию только эти 2, а все другие как бы уберёт из документов при выводе (сами записи не изменятся, конечно же). _id по умолчанию выводится, его можно убрать явным указанием

Maksim
01.06.2018
15:35:41
Понятно. Как раз мне обрезать не надо было, мне нужно было отфильтровать
не углядел что s на конце нет )

Google

yopp
01.06.2018
18:27:51

Алексей
01.06.2018
18:56:05

Max
01.06.2018
19:13:40
там ссылка на ютубчик

Алексей
01.06.2018
19:15:37
а. в мыло приходит. интересно. не было такого вроде ранее

Viktor
02.06.2018
06:52:12


yopp
02.06.2018
11:19:03
Прямая ссылка на воскресный стрим: https://www.youtube.com/watch?v=WNLzoNQf8dA
Stable: 3.6.5 (May 25, 2018), Bugfix: 3.4.15 (May 16, 2018), Upcoming: 4.0.0-rc1 (May 31, 2018)
MongoDB quick overview/production notes: https://www.percona.com/live/e17/sites/default/files/slides/Running%20MongoDB%20in%20Production%20-%20FileId%20-%20115299.pdf
4.0.0-rc1: https://groups.google.com/forum/m/#!topic/mongodb-user/8S4IPhjPZyA
3.6.5: https://docs.mongodb.com/manual/release-notes/3.6/#may-29-2018
3.4.15: https://docs.mongodb.com/manual/release-notes/3.4/#may-16-2018
3.2.20: https://docs.mongodb.com/manual/release-notes/3.2/#may-10-2018 (End of life: September 2018)
3.0.x: Support ended February 2018
Дорогой чятик, в воскресенье, 3 июня, с 19:00 до 22:00 (Мск) Артём @SvPupok делает тестовый стрим. Будем говорить о репликации и шардировании.
public poll
Да, хочу смотреть – 47
??????? 92%
Нет, мне неинтересно – 2
▫️ 4%
Нет, мне неудобно – 2
▫️ 4%
? 51 people voted so far.
Для тех кто пропустил. Ссылка на стрим: https://www.youtube.com/watch?v=WNLzoNQf8dA. За одно подписывайтесь на канал, это не последнее событие!


Dan
02.06.2018
18:20:59
Вроде на почту пришла ссылка тоже

yopp
03.06.2018
15:01:58
Привет! Стрим про репликацию и шардинг начинается через час. Подключайтесь, подписывайтесь на канал: https://www.youtube.com/watch?v=WNLzoNQf8dA ⚡️

Viktor
03.06.2018
15:59:03
@dd_bb запинишь ссылку с трансляцией в чате? с уведомлением :)
из 40 записавшихся явилось меньше четверти

yopp
03.06.2018
15:59:50
Не, уведомление это слишком жестоко :)
Но Артём уже онлайн, скоро начнём: https://www.youtube.com/watch?v=WNLzoNQf8dA

Max
03.06.2018
16:16:05

Bandikoot
03.06.2018
16:16:27
ну одно дело в опросник тыкать
и другое вечером воскресенья не забухать, а посмотреть полезное

Serhio
03.06.2018
16:29:33

Google

yopp
03.06.2018
17:29:40
Самое время задавать Артёму вопросы про шардирование и репликацию! https://www.youtube.com/watch?v=WNLzoNQf8dA

Алишер
03.06.2018
17:39:54
Вопрос:
Лог Mongos постоянно выдает:
I NETWORK [thread2] connection refused because too many open connections: 819
Соответственно, неудается к нему подконнектится, приходится перезапускать, но он все равно вскоре забивается. В конфиге Mongos.cfg не проставлено значения для net.maxIncomingConnections. Следовательно должно использоваться дефаултное значение 65536.

Artem
03.06.2018
18:04:29
Алишер, можно посмотреть в сторону максимального количества коннектов, открытых к конкретному mongod

Алишер
03.06.2018
18:04:57
Подробнее пожалуйста

Artem
03.06.2018
18:05:09
мин
смотри, монгос в качестве настройки использует количество входящих коннектов. но, кроме всего прочего он взаимодействует с обьектами всего кластера, т.е. поднимает коннекты ко всем демонам mongod. Какждый mongod имеет лимит подключений, который выставляется например в моем случае в systemd скрипте, который стартует сервис. LimitNOFILE
LimitNPROC. посмотри в сторону увеличения этих лимитов

Алексей
03.06.2018
18:37:42
@SvPupok @dd_bb если принимаются заказы на темы я бы очень хотел разузнать про варианты диагностики.
вот например типичный кейс: вдруг la 100500, всё тупит. как найти кто виноват, инструменты, кейсы, механика.

Artem
03.06.2018
18:51:04
ок) накидывайте вопросы, как раз будет о чем подумать к следующему стриму. Заодно и свой разговорный скил прокачать, а то я в виду отсутствия обратной связи, немного терялся и тупил))))

Алишер
03.06.2018
18:51:44

Алексей
03.06.2018
18:55:18

Алишер
03.06.2018
18:55:56

Алексей
03.06.2018
18:56:18
лимиты видны через systemctl show mongod

Алишер
03.06.2018
18:58:30
на primary и secondary.
третий - арбитр. не смотрю.
то что тут написано - имеет общее с реальностью https://toster.ru/q/419194
?

Artem
03.06.2018
19:09:34
у меня была абсолютно такая же проблема, но связана была с багами в старой версии монгоса. помогло обновление с версии 3.4.1 до 3.4.12

yopp
03.06.2018
19:16:47
Это, кстати, с монгосами частая проблема

Google

yopp
03.06.2018
19:17:13
Их нужно обновлять самыми последними и при любых проблемах оставлять на последней работающей версии

Алишер
03.06.2018
19:18:54

yopp
03.06.2018
19:20:09
Там уже 3.4.15 вышел

Алишер
03.06.2018
19:20:40
круто, но проблема сохраняется уже больше месяца
просто это волшебное число 819

yopp
03.06.2018
19:22:16
Попробуйте монгосы обновить
https://groups.google.com/forum/m/#!topic/mongodb-user/qHZiKa5oyM8
https://docs.mongodb.com/manual/reference/ulimit/

Алексей
03.06.2018
19:24:42
ржачно

Алишер
03.06.2018
19:24:57