yopp
У вас получается два условия. С логической операцией И (и дата в диапазоне и длительность события)
yopp
Но в монге условия по нескольким полям сразу объединяются через И
Maksim
оО попробую изучить вопрос
Maksim
Maksim
постиг магию агреации в итоге. осталось постичь $gte
Maksim
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]}}}])
Maksim
запрос отработал
Maksim
как теперь фильтрануть еще по duration )
Maksim
Bandikoot
с точки зрения синтаксиса, aggregate принимает на вход массив
Bandikoot
у вас в массиве 2 элемента сейчас:
{$match : ... },
{$project : ...}
вам нужно:
{$match : ... },
{$project : ...},
{$match : ... }
aggregate представляет собой условный pipeline, как в unix: выхлоп одного блока (отобранные или модифицированные документы) передаются на вход следующего
Maksim
но такая конструкция сильо замедлит обращение в базе ?
Bandikoot
медленно или быстро — зависит от ваших требований. попробуйте выполнить и решите для себя, устраивает ли скорость выполнения и будет ли изменяться в перспективе
Maksim
понятно
Maksim
я думал можно в project использовать $gte
Maksim
спасибо большое
Maksim
познал мастрество агреации
Maksim
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}}}
]
)
Maksim
вот такая загагулина вышла
Maksim
только вот ньюансы вышел %(
Maksim
при таком запросе мне возвращается {u'duration': 540.0, u'_id': ObjectId('5b11470398601c0f79bde558')}
Maksim
а хотелось бы весь вывод %( что-то пошло не так
Bandikoot
Bandikoot
$project, собственно, проецирует только указанные поля в документах. обычно им отсекают ненужные
Maksim
хм
Bandikoot
условно, если у вас есть документ из 100500 полей, а вам нужны только date и time, например, то
{
$project : {
_id : 0
date : 1,
time : 1
}
}
прокинет на следующую стадию только эти 2, а все другие как бы уберёт из документов при выводе (сами записи не изменятся, конечно же). _id по умолчанию выводится, его можно убрать явным указанием
Maksim
Понятно. Как раз мне обрезать не надо было, мне нужно было отфильтровать
Maksim
не углядел что s на конце нет )
yopp
Aleksey
Max
там ссылка на ютубчик
Aleksey
а. в мыло приходит. интересно. не было такого вроде ранее
Viktor
yopp
yopp
Прямая ссылка на воскресный стрим: https://www.youtube.com/watch?v=WNLzoNQf8dA
yopp
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
yopp
Дорогой чятик, в воскресенье, 3 июня, с 19:00 до 22:00 (Мск) Артём @SvPupok делает тестовый стрим. Будем говорить о репликации и шардировании.
public poll
Да, хочу смотреть – 47
👍👍👍👍👍👍👍 92%
Нет, мне неинтересно – 2
▫️ 4%
Нет, мне неудобно – 2
▫️ 4%
👥 51 people voted so far.
yopp
Для тех кто пропустил. Ссылка на стрим: https://www.youtube.com/watch?v=WNLzoNQf8dA. За одно подписывайтесь на канал, это не последнее событие!
Dan
Вроде на почту пришла ссылка тоже
yopp
Привет! Стрим про репликацию и шардинг начинается через час. Подключайтесь, подписывайтесь на канал: https://www.youtube.com/watch?v=WNLzoNQf8dA ⚡️
Viktor
@dd_bb запинишь ссылку с трансляцией в чате? с уведомлением :)
Viktor
из 40 записавшихся явилось меньше четверти
yopp
Не, уведомление это слишком жестоко :)
yopp
Но Артём уже онлайн, скоро начнём: https://www.youtube.com/watch?v=WNLzoNQf8dA
Max
Bandikoot
ну одно дело в опросник тыкать
Bandikoot
и другое вечером воскресенья не забухать, а посмотреть полезное
Serhio
yopp
Самое время задавать Артёму вопросы про шардирование и репликацию! https://www.youtube.com/watch?v=WNLzoNQf8dA
Anonymous
Вопрос:
Лог Mongos постоянно выдает:
I NETWORK [thread2] connection refused because too many open connections: 819
Соответственно, неудается к нему подконнектится, приходится перезапускать, но он все равно вскоре забивается. В конфиге Mongos.cfg не проставлено значения для net.maxIncomingConnections. Следовательно должно использоваться дефаултное значение 65536.
SvPupok
Алишер, можно посмотреть в сторону максимального количества коннектов, открытых к конкретному mongod
Anonymous
Подробнее пожалуйста
SvPupok
мин
SvPupok
смотри, монгос в качестве настройки использует количество входящих коннектов. но, кроме всего прочего он взаимодействует с обьектами всего кластера, т.е. поднимает коннекты ко всем демонам mongod. Какждый mongod имеет лимит подключений, который выставляется например в моем случае в systemd скрипте, который стартует сервис. LimitNOFILE
LimitNPROC. посмотри в сторону увеличения этих лимитов
Aleksey
@SvPupok @dd_bb если принимаются заказы на темы я бы очень хотел разузнать про варианты диагностики.
вот например типичный кейс: вдруг la 100500, всё тупит. как найти кто виноват, инструменты, кейсы, механика.
SvPupok
ок) накидывайте вопросы, как раз будет о чем подумать к следующему стриму. Заодно и свой разговорный скил прокачать, а то я в виду отсутствия обратной связи, немного терялся и тупил))))
Anonymous
Aleksey
Aleksey
Aleksey
лимиты видны через systemctl show mongod
Anonymous
Anonymous
на primary и secondary.
Anonymous
третий - арбитр. не смотрю.
Anonymous
то что тут написано - имеет общее с реальностью https://toster.ru/q/419194
Anonymous
?
SvPupok
у меня была абсолютно такая же проблема, но связана была с багами в старой версии монгоса. помогло обновление с версии 3.4.1 до 3.4.12
yopp
Это, кстати, с монгосами частая проблема
yopp
Их нужно обновлять самыми последними и при любых проблемах оставлять на последней работающей версии
Anonymous
yopp
Там уже 3.4.15 вышел
Anonymous
круто, но проблема сохраняется уже больше месяца
Anonymous
просто это волшебное число 819
yopp
Попробуйте монгосы обновить
yopp
https://groups.google.com/forum/m/#!topic/mongodb-user/qHZiKa5oyM8
yopp
https://docs.mongodb.com/manual/reference/ulimit/
Aleksey
ржачно
Anonymous