Sergey
Ну про CR речи не идёт
Alex
Подскажите, как правильно фильтровать данные. Есть вот такая коллекция:
{a: 1, b: 'x'}
{a: 1, b: 'y'}
{a: 3, b: 'z'}
Хочу фильтровать ее, используя такой массив:
[{a: 1, b:'y'}, {a: 3, b:'z'}]
Т.е. в результате должно остаться только:
{a: 1, b: 'x'}
Alex
никак не пойму, как мне это правильно сделать
yopp
Если я тебя правильно понял, ты хочешь исключить из результатов несколько документов по совпадению двух ключей a и b?
Alex
совпадение двух ключей из объекта, который в массиве, т.е. таких пар ключей может быть больше 1
Alex
я пробовал строить массивы из фильтра, массив значений a и b, а потом использовать $nin, но получилось как-то не так
yopp
Иди перечитывай про запросы
yopp
$nin тебе не нужен
yopp
Тебе нужно внимательно читать
yopp
Из твоей не очень внятной постановки задачи можно сделать только один вывод — ты решаешь свою задачу совершенно неправильно
yopp
Начать нужно с простого: логических операций $or и $and
yopp
И разобраться наконец с тем, как вообще работает язык запросов в монге.
yopp
Потому что $nin не для этого совершенно, у него семантика иная
Alex
понятно
yopp
Попробуй пробежать глазами по query lang и переосмыслить свою задачу
yopp
начинать рекомендую вот от сюда: https://docs.mongodb.com/manual/tutorial/query-documents/
yopp
и вот отсюда: https://docs.mongodb.com/manual/reference/operator/query/
yopp
ну и за одно убедится что концепция документов до конца понятна. это тут https://docs.mongodb.com/manual/core/document/
yopp
Спойлер: тебе надо (a == a1 && b == b1) || (a == a2 && b == b2). массивы не покатят
Sergey
Люди, нужен спец по монге на проект по апгрейду с версии 2.2.7 на 3.х, на хаускипинг и на разовые мелкие задачи. Система в Питере. Два шарда. Всего данных условно два раза по 100гб.
Кто готов поговорить? Или может быть посоветует кого?
yopp
Я готов поговорить
Aleksey
yopp
чот нету ;)
неделька выдалась сильно сложнее чем бы я хотел. на этой должен добраться
yarastqt [msk +1 week]
Привет, подскажите по монге, допустим есть простая схема:
{
property: {
type: [String]
}
}
Есть поле - массив, дак вот, можно ли как-то при валидации этого поля кинуть ошибку для какого-то конкретно значения?
Просто если делать к примеру так:
Schema.path('property').validate(function () { ... }, 'Property error');
То в ошибке у нас будет весь массив
Cap
{
"58f5b2530a975a13fb0c21ff" : {
"persName" : "Огонек"
},
"58f5b2530a975a13fb0c2200" : {
"persName" : "Дриада"
},
.....
}
как мне перебрать эти поля (58f5b2530a975a13fb0c21ff ..) в forEach ?
yopp
3.4.4 на подходе: https://docs.mongodb.com/manual/release-notes/3.4-changelog/#id1
yopp
yopp
yopp
чот нету ;)
сегодня будет докеровский контейнер, 1 экспортер на одну ноду и замена конфига на параметры и envvar
Aleksey
йуху!
yopp
если мне опенстек ещё рогов не накрутит
yopp
не могу нормально собрать тестовый стол, блин :(
yopp
¯\_(ツ)_/¯
yopp
как хочешь!
Aleksey
tnx
yopp
Aleksey
http://lesswrong.ru/w/%D0%9F%D0%B0%D1%86%D0%B8%D1%84%D0%B8%D0%B7%D0%BC_%D0%B3%D1%83%D0%B1%D0%B8%D1%82_%D1%83%D1%85%D0%BE%D0%B6%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5_%D1%81%D0%B0%D0%B4%D1%8B
Aleksey
так что что бы не понижать уровень дискуссии
yopp
так у нас тут нормальные дискуссии
yarastqt [msk +1 week]
Просто не совсем понимаю пока щас, как обрабатывать такие ошибки, т.е. на клиент в итоге приходит ошибка а в нем все значения и в форме соот-но тоже подсвечиваются все поля как не валидные
yopp
Если по чесноку, я считаю что нельзя эти валидаторы использовать вообще.
yopp
Потому что у тебя бизнес-логика в субд утекает
yarastqt [msk +1 week]
Возможно) я только постигаю бэкэнд, в будущем постараюсь такого не делать
Denis
Потому что у тебя бизнес-логика в субд утекает
В 2017 так никто не делает, ага, а вообще это нормальная практика раньше была. Сейчас все с dal работают. Собственно по рассказам тех кто ещё так работал — ничего плохого в этом нет
Cap
А для каких таких кейсов вы используете монго?
Я использую для игрового сервера, пошаговой сессионной мобильной игры.
В целом удобно что json.
Denis
MEAN стек
yopp
Alexey
всем привет
Подскажите, если я при баллансировке получаю вот такое:
Migration Results for the last 24 hours:
394 : Success
838 : Failed with error 'aborted'
что бы это могло значить? Почему failed? Куда покопать?
Denis
yopp
вместо того чтоб за аббревиатурами прятаться, ты мне расскажи когда хранение логики в СУБД оправдано.
yopp
и почему в этом случае положительные эффекты перевесят все минусы такого подхода
Denis
>раньше было нормальной практикой
>когда плюсы перевесят минусы
Я изначально не говорил что это лучше чем то что сейчас, а плюсы перевесят минусы возможно когда нужно будет мигрировать с технологии на технологию, а дб везти за собой. Только это приходит в голову
Denis
И то ¯\_(ツ)_/¯
Denis
Смотря какой проект
yopp
официальный докерфайл для монги это феерия сладострастия просто
CC-BY-SA-4.0/Docker-ce30.0
Почему?
yopp
https://github.com/docker-library/mongo/blob/master/3.4/docker-entrypoint.sh
Aleksey
врятли в 200 строчек можно сделать что то хорошее
yopp
я пропустил момент когда они туда бустрапинг юзеров добвали
yopp
потому что это подстава прямо пиздец. в месте с keyFile включается аутентификация. а я не мог понять почему у меня кластер никак между собой авторизироваться начать не может
yopp
плюс подстава: rs.initialize почему-то без аутентификации работает
yopp
убил бы
Denis
а как я понимаю defaults в схеме можно только синхронно выставить? Просто мне нужно выставлять дефолтное значение полю при создании субдокумента и я вот думаю, сделать ли defaults синхронной функцией, перед ней вызывать асинхронную, кешировать значение, и следующим действием создавать документ(выглядит как немного хуевый дизайн потому что код расбросан будет) или делать это всё в 2 квери не юзая defaults вообще, будет читабельнее, но это 2 запроса к бд, а не 1
Denis
что на самом деле в моём случае в принципе приемлемо, нет нагрузки и не предвидится
Denis
расбросан лол, разбросан*
yopp
Mikhail
как можно запустить монгу с параметрами с помощью pm2?
Mikhail
pm2 start mongod --port 27018 --dbpath data/db --name mongodb
так не получается
Mikhail
pm2 start mongod
так получается, но нужно с параметрами
yopp
yopp
pm2 <cmd> <name> -- <args>
yopp
pm2 start mongod -- --port 27018 --dbpath data/db --name mongodb
Mikhail
Да, уже разобрался, спасибо, однако это несколкьо непредсказуемо, что перед параметром для скрипта нужно писать дополнительно --. В гугле не нашел.
yopp
это стандарт
Mikhail
Окей :)
yopp
вполне себе предсказуемый
Denis
defaults? в монге?
default имел ввиду.
Ну т.е когда пишешь
field: {type: Date, default: Date.now)
Как я понимаю туда можно передавать любую функцию