Nick
так же как и в мускуле, суть абсолютно та же, если использовать плоские структуры
Anonymous
Да я фронтендер глупый, по этому как слепой котенок пока в БД
Anonymous
Всем спасибо)
Anonymous
Получилось)
Anonymous
Завтра попробую эту балалайку со своим фронтом связать
AstraSerg
Ваших извенений хватит на пятерых :)
Anonymous
Просто фронтенд сообщество куда более токсичное, от туда и привычка видимо)
AstraSerg
У нас с этим попроще, так что не стесняйтесь :)
Anonymous
Привет всем, подскажите способ как-то проитерироваться по коллекции и выполнить модификации с каждым документом на основании его данных. Функция updateMany как мне показалось, не даёт доступа к данным модифицированного объекта. Вообще ищу что-то типа map
Anonymous
Всем хай, я проснулся и день тупых вопросов начинается снова. Правильно ли я понимаю, что удалять базу данных "admin" нельзя?
Anonymous
Нельзя
Вопрос номер два... Сейчас, когда я переключаюсь на базу данных admin, пользователей у меня там нет, а значит кто хочет, тот туда и пишет и мне нужно добавить нового пользователя в эту бд с правами "readWriteAnyDatabase"?
Anonymous
Точнее такого
Anonymous
У меня просто хуйня в конце какая-то вышла, по этому я сейчас нуля пытаюсь показать весь свой порядок действий, чтобы разобраться, где я накосячил...
Nick
Привет всем, подскажите способ как-то проитерироваться по коллекции и выполнить модификации с каждым документом на основании его данных. Функция updateMany как мне показалось, не даёт доступа к данным модифицированного объекта. Вообще ищу что-то типа map
если вы хотите чтото сделать на основе значений в текущем документе и это не инкремент/декремент счетчика, то только полная итерация по find и последующим изменением дока и его апдейтом по ключу. если есть возможность простоя, то можно использовать aggregations чтобы сгенерить новую коллекцию, и потом переименовать в старую. аналогично можно использовать mapreduce однако если это не разовая операция и вы завязываете на этом логику, то сразу забудьте и переделывайте, т.к. итерирвоание по всей коллекции и изменение элементов не атомарно и приведет к неконсистентности БД
Anonymous
use admin, потом createUser, всё правильно
Так, теперь мне надо перезапустить mongod и mongo и законектиться уже с аунтефикацией?
AstraSerg
Так, теперь мне надо перезапустить mongod и mongo и законектиться уже с аунтефикацией?
Перед перезапуском mongod, проверьте включена ли аутунтификация в конфиге. mongo перезапускать не нужно, это просто клиент. Он отключится при перезапуске демона (mongod) ПС. мат у нас не приветствуется. Воздержитесь по возможности :)
Anonymous
[/] mongod --port 27017 --dbpath /data/db --auth запускаю вот так
Anonymous
ну вроде все правильно пока идет, сейчас попробовал без авторизации запросить пользователей, он мне ошибку выдал)
Anonymous
Так, ну все, вроде получилось. Теперь мне нужно создать новую базу данных. Под свой проект... и мне это делать из под этой учетной записи? А потом переходить в неё, и уже добавлять пользователя
Anonymous
Который может только записывать/читать бд
Anonymous
Ну в смысле, как создать бд, я знаю. Как добавить в неё фикстуру для теста, тоже. А вот чет с логином к этой базе данных без "админа", у меня какая-то беда. Может я права какие-то не те ей выдаю.
Nick
update $unset:{ "fieldName":"" }
Mira
Доброго времени суток :) Подскажите, пожалуйста Поле showFor - имеет тип в mongoose схемах - mixed Я там храню email'ы (string) и Id групп (objectId) делаю find по полю showFor, туда передаю email пользователя (всё работает) и пытаюсь сделать поиск по массиву userGroups (что собственно и не работает)
Mira
Mira
Может, есть у кого догадки?
Mira
Получается, он не делает поиск по переданному массиву, даже хз почему
Nick
а что вы хотетеиспользуя $all?
Mira
а что вы хотетеиспользуя $all?
Нашёл статью на хабре, пробовал так же, вот я и решил спросить здесь, что не так
Nick
нет. напишите логически что вы пытаетесь сделать, само услвоие словами напишите
Nick
скорее всег овы неправильно all используете
Anonymous
Насколько я правильно понимаю, использовать главную учетную запись с привилегией userAdminAnyDatabase, очень не правильно и вообще не безопасно. По этому, для своей новой коллекции, мне нужно создать еще одну учетную запись. Собственно вопрос, какие права ей выдать, readWrite?
Mira
нет. напишите логически что вы пытаетесь сделать, само услвоие словами напишите
Иначего говоря у меня есть следующий массив в БД, у которого тип mixed Там хранятся как email'ы, так и Id груп, для которых я должен отображать значения Мне с клиента приходит массив групп -> req.query.userGroups Как мне выполнить поиск и выдать только те объекты, где значения userGroups есть в поле showFor
Nick
$all - нужно использовать когда нужно чтобы в вашем массиве встретились все указанные в фильтре группы
Anonymous
Насколько я правильно понимаю, использовать главную учетную запись с привилегией userAdminAnyDatabase, очень не правильно и вообще не безопасно. По этому, для своей новой коллекции, мне нужно создать еще одну учетную запись. Собственно вопрос, какие права ей выдать, readWrite?
Я прошу прощения, за свои глупые вопросы, просто можете посмотреть на мою аватарку) У меня не аутизм конечно, но все равно, галоперидол мне нормально работать пока не дает, а очень хочется :|
Mira
отлично значит вам надо, чтобы не прям все указаныне группы были в этом массиве, а лишь "среди", пересечение
Спасибо, более менее разобрался, но вот так почему-не ищет, так же если убрать квадратные скобки - результат плачевный
Nick
Спасибо, более менее разобрался, но вот так почему-не ищет, так же если убрать квадратные скобки - результат плачевный
давайте еще раз формализуем запрос: выбрать записи у которых showFor равно емейлу либо совпадает с одной из переданных userGroups?
Nick
вот это другой разговор
Nick
Да
https://docs.mongodb.com/manual/reference/operator/query/in/
Nick
вместо $all ставите $in
Mira
вот это другой разговор
Да, я и с $in пробовал, как-то тоже не работает
Nick
по запросу, который я выше обговорил - нужен in
Nick
да все верно
Nick
сделайте тестовый набор данных и на нем првоерьте
Nick
может у вас там даныне по другому введены
AstraSerg
Насколько я правильно понимаю, использовать главную учетную запись с привилегией userAdminAnyDatabase, очень не правильно и вообще не безопасно. По этому, для своей новой коллекции, мне нужно создать еще одну учетную запись. Собственно вопрос, какие права ей выдать, readWrite?
Да, под полным админом лучше не работать с точки зрения безопасности. Сделайте отдел.ную учетку. Есть встроенные роли https://docs.mongodb.com/manual/reference/built-in-roles/ можете сделать свои. Базу можно не делать. Просто делаете инсерты. При необходимости она создастся
Mira
да все верно
Нашёл проблему в том, что если id хранится в string, то он ищет, а если в objectID (разговор про типы данных), то он не находит
Nick
само собой
Mira
само собой
а как сделать так, что бы он и типы для objectId искал?
Nick
монга в автопреобразования не умеет
Nick
явно указывать из как обжектИд, пересобирите массив из них
Nick
из req вы наверняка получаете массив стрингов, нужно будет его переконвертить в массив идников
Nick
это прогерская задача и зависит от вашего языка либ и т.п.
Nick
если js, будет чтото вроде (я хз за синтаксис) newGroups=[] oldgroups.foreach(group->{ newGroups.add(new ObjectID(group)) })
Anonymous
Пожалуй, задам еще один базовый вопрос. Вот например, у меня есть коллекция, в которой я храню связку "логин/пароль". Теперь же мне нужно к этим юзерам, хранить какие-то данные, к примеру их личные записи и никто, кроме этих юзеров, не должен получать доступ к этим записям. Буду рад даже просто словесному описанию алгоритма, дальше думаю разберусь.
Anonymous
Сейчас у меня вот такой лист получился.
Anonymous
Я не совсем понимаю просто, одного момента, на каком уровне происходит "авторизация", мне при регистрации нового пользователя создавать отдельную коллекцию и пихать уже туда все его данные, или же, все же пользователи и записи хранить отдельно друг от друга?
Oleg
Anonymous
господи
как легко заставить поверить человека в бога)
Anonymous
Я второй день с БД вообще работаю) Понятное дело что мало что в этом понимаю.
Oleg
как легко заставить поверить человека в бога)
на самом деле я уверую, когда ты скажешь как ты с таким ключом будешь искать юзера по имейлу
Anonymous
а, окей :)
Я так понимаю, поле _id генерируется автоматически? В каком формате мне правильно добавлять юзера?
Anonymous
А... окс, ща поправлю) Я просто временно на больничном, сам я из фронтонтенда, решил хоть немного с бекендом разобраться, по этому простите за глупые вопросы)