zEvilz
всем привет. #вопрос стоит монго v4.2.1, пока только разбираюсь в конфиге добавил security: authorization: "enabled" создал рута с ролью root и админа с ролью userAdminAnyDatabase, перезапустил сервис если приконнектиться без указания юзера и выполнять команды, но никаких ошибок с доступом не показывает, пароли тоже не запрашивает. где косяк?
zEvilz
show dbs ничего не выдает, переключение по базам работает show collections выдает Warning: unable to run listCollections, attempting to approximate collection names by parsing connectionStatus как я понял, без указания юзера доступ ограниченный, но и ошибок нет, что не авторизован
yopp
Да, аутентификация производится отдельной командой, после чего текущее соединение будет помечено как аутентифицированное
yopp
Команды вы отправить можете, но без аутентификации в ответ будут ошибки
zEvilz
Команды вы отправить можете, но без аутентификации в ответ будут ошибки
понял, спасибо. а то тут в статье вижу, что на любую команду должна выдаваться ошибка типа listDatabases failed:{ "ok" : 0, "errmsg" : "not authorized on admin to execute command { listDatabases: 1.0 }", "code" : 13, "codeName" : "Unauthorized"
yopp
Проверить текущий статус соединения можно через https://docs.mongodb.com/manual/reference/command/connectionStatus/ Там будет authInfo
yopp
Возможно там некорректно ошибки обрабатываются
yopp
Попробуйте db.foo.find({}) сделать, например
zEvilz
Проверить текущий статус соединения можно через https://docs.mongodb.com/manual/reference/command/connectionStatus/ Там будет authInfo
{ "authInfo" : { "authenticatedUsers" : [ ], "authenticatedUserRoles" : [ ], "authenticatedUserPrivileges" : [ ] }, "ok" : 1 }
zEvilz
понял
zEvilz
еще вопрос. какие параметры монго стоит мониторить кроме доступности сервиса?
Yuriy
Привет, может кто знает как подключиться к монго через ssh tunnel из nodejs?
yopp
Если не tls, то как обычный тонель
yopp
С tls можно попробовать tcp прокси посредине поставить, чтоб tls терминировать. Но это очень плохая идея
Yuriy
открыть туннель и потом подключиться к открытому порту?
yopp
Возможно конечно как-то с dns локально накрутить
yopp
Я бы вам рекомендовал отказаться от тоннелей и поднять нормальный vpn
yopp
Это крайне неподходящий способ подключения
Yuriy
это подходит наибольше работа с базой идет локально но есть один сервис которий должен стучать к базе удалёно
yopp
Вы хотите vpn
yopp
В отличии от тоннеля это полноценный инструмент, который в том числе можно настроить на автоматическую установку соединения при запросе определённого адреса/днс имени
Anonymous
{managed_groups: undefined} - найдет все записи, где нет этого поля. А как найти записи, где оно есть?? Извините за глупый вопрос))))
Bohdan
$ne null
Bohdan
hotya
Bohdan
это массив же?
Anonymous
да
Bohdan
{ $exists: true, $not: {$size: 0} } })
Anonymous
{ $exists: true, $not: {$size: 0} } })
{$exists: true} - хватило.. Массивов с нулевым размером нет. Спасибо огромное!!!!
Joseph
А насколько плохо делать populate от пустого массива ???
Joseph
почему оно должно быть плохо?
Это и был вопрос )) получается этот оператор в чейнe по сути ничего не будет делать
Nick
да
Joseph
да
Я просто побоялся славить какой нибудь сайд эфект
Joseph
но вроде бы все нормально
Anonymous
я не понимаю, как получить id, потому что через JSON не получается(я изпользую Mongodb driver и node js) [ { _id: 5dcda831554c7a2dd446a534, id: 'test' }, { _id: 5dcda843554c7a2dd446a535, id: 'test2' }
Anonymous
Id
Anonymous
JSON.parce
Nick
JSON.parce
киньте кусок кода где запрос делаете
Anonymous
https://pastebin.com/7sXQXXh1
Anonymous
Как заставить бд выдавать ответ в нормальном JSON на node js driver
Nick
https://pastebin.com/7sXQXXh1
в find нужно передавать запрос в виде {id:"some_id"}
Nick
и по хорошему пройдите какойнить туториал
Nick
какойнить такой, первый попавшийся в гугле https://flaviocopes.com/node-mongodb/ начиная с Find all documents
Anonymous
в find нужно передавать запрос в виде {id:"some_id"}
Мне нужно получить только id, не с _id. В гугле нашел все кроме этого)
Nick
вы получите документ из базы, а уже у него вытиащите нужное вам поле
Anonymous
вы получите документ из базы, а уже у него вытиащите нужное вам поле
Я получил документ, но я не знаю как получить поле. JSON не работает из-за _id
Nick
docs.id
Nick
док уже json объект
Anonymous
docs.id
Я так пробывал сразу, но это не JSON
Nick
collection.find('id') сейчас эта строка в коде?
Nick
сделайте просто collection.find()
Anonymous
Такой же ответ
Anonymous
https://pastebin.com/7sXQXXh1
Тут я написал что выходит
Nick
Тут я написал что выходит
не обратил внимание, docs[0].id
Nick
там получается массив доков
Nick
так что нужно по нему проитерироваться
Nick
хз кстати отработает [0] или придется через форич обходить
Anonymous
не обратил внимание, docs[0].id
Отрабатывает только первое
Nick
разбирайтесь с js, из базы вы получаете массив и придется с этим жить
Anonymous
Я массив получаю не нормальный
Nick
вроде как была возможность только один док вытащить, но это уже вам в доки драйвера, тут уже не подскажу
Nick
там курсор
Alexander
Спасибо за митап. За возможность пообщаться с коллегами, за возможность прикоснуться к вендору. И за пиццу ))
Андрей
Добрый день, посоветуйте пожалуйста gui клиент под Windows для mongodb. Нужно подключиться к базе данных которая в контейнере докера крутится, структуру изучить
zEvilz
всем привет. создал юзера для мониторинга db.createUser( ... { ... user: "monit", ... pwd: "123456", ... roles: [{role: "clusterMonitor", db: "admin"}] ... } ... ) но не могу получить статистику mongostat Failed: (Unauthorized) not authorized on admin to execute command { serverStatus: 1, recordStats: 0, lsid: { id: UUID("e720e8b6-eb12-4a1e-9854-a657c9296278") }, $db: "admin" } авторизоваться под ним в монго тоже не могу 2019-11-15T08:07:43.023+0000 E QUERY [js] Error: Authentication failed. : connect@src/mongo/shell/mongo.js:341:17 @(connect):2:6 2019-11-15T08:07:43.024+0000 F - [main] exception: connect failed 2019-11-15T08:07:43.024+0000 E - [main] exiting with code 1 в чем ошибка?
Bohdan
читай что тебе пишет монга, первый твой вопрос - чтобы статус посмотреть админ юзер нужен
Bohdan
надо еще выяснить что юзер с такой ролью ваще может делать
zEvilz
прочитал, что юзер с ролью clusterMonitor может юзать mongostat. юзером с ролью root могу смотреть, а с этим нет
Ренат
Добрый день. Необходимо в интернет-магазин добавить отображение ранее просмотренных товаров. Есть два варината: 1. Создаем отдельную коллекцию с полями id - идентификатор посетителя products - массив из продуктов, которые посещали (id продукта, название и прочие базовые детали) 2. В существующей коллекции продуктов создаем поле, хранящее массив, например visited, и записываем в него айди посетителей. Какой вариант лучше? Или возможно есть третий вариант?