Nikita
если я не ошибаюсь
Nikita
нифига, ошибаюсь )
Nikita
в общем мне нужен left join )
yopp
Это просто left join. Вы хотите выбрать документы которые есть в коллекции A и добавить к ним пересечение по свойству X в коллекции B. Это просто $lookup
Nikita
yopp
Что значит «только пересечение»? Расскажите свою задачу
Nan0
в общем мне нужен left join )
к слову https://www.quora.com/What-is-the-difference-between-a-LEFT-INNER-JOIN-vs-a-LEFT-OUTER-JOIN
Nikita
Что значит «только пересечение»? Расскажите свою задачу
есть коллекция инвайтов с { email, status }, и мне нужно добавить к данным username и userid из коллекции юзеров
Nikita
$pipeline = [ [ '$match' => [ '_id' => new \MongoDB\BSON\ObjectID($params['id']) ] ], [ '$unwind' => '$invites' ], [ '$lookup' => [ 'from' => 'users', 'localField' => 'invites.email', 'foreignField' => 'mail', 'as' => 'invitedUser' ] ], [ '$unwind' => [ 'path' => '$invitedUser' ] ], [ '$project' => [ 'email' => '$invites.email', 'status' => '$invites.status', 'name' => '$invitedUser.givenName', 'userId' => '$invites.userId' ] ] ];
yopp
А что у вас в пайплайне после $lookup?
Nikita
выше весь пайплайн )
yopp
перефразирую: какие документы у вас возвращаются в результате выполнения $lookup
Nikita
перефразирую: какие документы у вас возвращаются в результате выполнения $lookup
приходит два документа: [{"email":"dream@gmail.com","status":"active","name":"Никита","userId":"5d5b88391b8a41e5a7996184",},{"email":"testadmin@example.com","status":"active","userId":"5d6fcaa538fa266712e4c300","name":"Тестер Стрижак"}] а должно быть еще несколько, для которых в users не нашлось записей
Nick
это после первого анвинда?
Nick
и что после лукапа и до второго анвинда
Nikita
после второго анвинда уже два документа
Nick
вот и ответ, у вас после лукапа один из доков с пустым массивом, а анвинд генерит только при ниличии записей в массиве
Nick
так что проверьте что после лукапа получаете то что нужно и дальше развлекайтесь без анвиндов
Vasily
Добрый вечер! Подскажите пожалуйста, как можно произвести вот такое преобразование? в какую сторону гуглить?
Nick
потом анвиндом
Nick
если операция разовая, то можете $project попробовать
Roman
ночи почему то на новом сервере через SSH туннель не могу подключится
Roman
Roman
Roman
обновил робо3т - пошло
Roman
всем спасибо
Артем
Подскажите пожалуйста, есть ли какие то ограничения на число шагов в Aggregation Pipeline при создании пайплайнов в Compass? Делаю длинный пайплайн (шагов 12-15), он работает, сохраняю его. После этого загружаю его из памяти компаса и не получается произвести даже первый шаг, выскакивает ошибка timeout. Хотя при последовательном создании шагов агрегации все работает
Артем
На первом шаге пайплайна
Артем
Сори, что не скрин. Телеграм на компе никак не работает
Артем
В таком состоянии он виснет и никуда не двигается. Хотя если начать создавать с нуля такой же пайплайн, все будет хорошо
Артем
Причем такая ситуация не только с этим пайплайном. Может быть нужно какие то настройки на хосте поменять и сам компас не причем?
Nick
Сори, что не скрин. Телеграм на компе никак не работает
Он пытается кудато подключиться, проверьте параметры базы
Vova
Какой командой сделать инкремент поля с датой? Например, 23/03/2020 00:00:00 записано в бд, надо сделать 24/03/2020 02:00:00. Есть идеи? Подумываю хранить в секундах с unix epoch, но может есть что-то более адекватное
RapidCodeLab
очень леко все гуглится, не ленитесь)
Vova
{ $set: { field: { $add: [ "$field", 2*24*60*60*1000 ] } } }
Vova
Такое нашёл, из новой версии 4.2
RapidCodeLab
тоже самое, вид сбоку
Den
Всем доброго времени, уважаемые знатоки, подскажите пожалуйста, как тут вместо группировки по мыссиву сделать групировку по названию статуса aggregate([ { $project: { id: 1, status: { $slice: [ "$status", -1 ] } } }, { $group: { _id: '$status.name', total: { $sum: 1 }, ords: { $push: "$$ROOT" } } }, { $sort: { total: -1 } } ])
Den
содержание поля status : [ { "name" : "Received", "date" : ISODate("2019-05-05T13:10:22.193Z"), "_id" : ObjectId("5ccee0be944af2343dd5fd5a"), "modifier" : "System" }, { "name" : "Approved", "date" : ISODate("2019-05-07T14:19:09.313Z"), "modifier" : "den@gmail.com", "comments" : "", "_id" : ObjectId("5cd194279bb2671931113fd1") }, { "name" : "Approved", "date" : ISODate("2019-05-07T15:36:08.027Z"), "_id" : ObjectId("5cd1a5efbbed982e6e91c6e2"), "comments" : "", "modifier" : "den@gmail.com" }]
Roman
привет ребят
Roman
я помню давно тут спрашивал и мы нашли как сделать projection в драйвере ноды для find
Roman
но я снова забыл, в доке указано неверно и в туторилах это точно
Roman
projection наверное
Roman
не fields
Roman
Пробовал искать в группе по своим сообщениям?
ага, но наверное projection все таки
Roman
устроили блин путаницу
Roman
наверное это один из моих вопроов 🙂 будут проблемы напишу
Roman
№2
да спс
Vlad🍁
Чем отличается установка монго с докера и нативно?
Sebor▂▅▇█▓▒░
Одно в докере, другое нативно
Nikita
Ребят, а что у Монги произошло с лицензией?
Nikita
Дропнули из репозиториев многих дистрибутивов в начале года.
Nikita
"Таким образом, хотя SSPL не отличается от GNU AGPLv3, со всеми обычными свободами использования, модификации и распространения кода (и практически тем же языком), SSPL явно заявляет, что любой, кто хочет предложить MongoDB как услугу (или другое ПО под этой лицензией), должен либо получить коммерческую лицензию, либо открыть исходный код сервиса, чтобы помочь сообществу."
Nikita
Никто не вникал? Если есть условно веб приложение / сайт использующий MongoDB, то необходимо ли открывать исходные коды?
Dmitriy
Никто не вникал? Если есть условно веб приложение / сайт использующий MongoDB, то необходимо ли открывать исходные коды?
нужно открывать только если ты предлагаешь саму монгу как услугу. если использовать монго как сторадж данных для своей бизнес логики и продавать соответственно другую услугу (телефонных справочник например), то это не обязательно.
Dmitriy
как я понимаю эту часть, соответственно
yopp
Требование в части публикации исходного кода касается только кода оркестрации монги в случае если исходный код используется для предоставления базы данных как услуги.
yopp
Выпилили поборщики СПО, которые считают такие требования лицензии нарушением «свободы» по этому монга в головах укушенных столлманом теперь несвободное ПО А страдаете вы
yopp
Но самое главное что у монги есть свои репозитории для официально поддерживаемых платформ, которые в отличии от «штатных» нормально обновляются. Пользуйтесь ими
Nikita
"A company that offers a publicly available MongoDB as a service must release the software it uses to offer such service under the terms of the SSPL, including the management software, user interfaces, application program interfaces, automation software, monitoring software, backup software, storage software and hosting software, all such that a user could run an instance of the service using the source code made available."
Nikita
https://repo.mongodb.org/
yopp
https://repo.mongodb.org/
https://docs.mongodb.com/manual/installation/