a
в systemctl какой пользователь?
Я просто даю команду sudo systemctl start mongod Получается где то в системе прописан юзер от которого запускается этот сервис?
a
в systemctl какой пользователь?
А вообще это возможно поменять юзера через которую запускается в systemctl только на сервис монго?
Alexander
a
найти ошибку и погугли ее
"DBException in initAndListen, terminating","attr":{"error":"IllegalOperation: Attemp ted to create a lock file on a read-only directory: /mongodb"}}
a
Тут явно ему прав не хватает потому что он запускается от рута. А я ему права закрыл.
a
Вопрос такой - как теперь запустить его от нового юзера mongo_user
a
Хотя нет. Я вижу что это системный юзер. Ничего страшнего если я поменяю пароли у этого юзера?
Alexander
Пользователь прописывается в конфигах systemd для mongod. Там должна быть опция User, насколько я помню, а конфиг должен лежать где-нибудь в /etc/systemd/system Но зависит конечно от инсталлятора, куда он его положил
a
А сделать оунером для dbPath юзера root это плохо?
a
Или выкинуть этот systmctl и запускать его непосредственно от юзера mongo_user?
Alexandrr
А сделать оунером для dbPath юзера root это плохо?
рутирование любых не стандартных служб ошибка
a
Откючил сервис. Запустил вручную.
Vik II
ребятули, почему одна коллекция загружается за 3-4 сек (1.226 документов), а другой за почти минуту (73 документов) ?
Vik II
что значит "загружается"?
при нажатии на "обновить" данные подгружаются долго
Vik II
датагрип прямой коннект к mongo atlas
Air
Допустим нужна Страница для создания товара Как в зависимости от выбранной Категории/подкатегории выводить разный список полей? Типа для Хлеба появляется поле "Формовой: Да/Нет" Для Молока появляется поле "Жирность: Double" Нужно для каждой Подкатегории создать Документ и выводить условным оператором?
Air
модели данных задать и через них возвращать нужные поля
т.е. в Документе нужной Подкатегории создаю Массив/Объект, где хранятся уникальные атрибуты для этой подкатегории
Air
Air
типа так? посмотрите пожалуйста, где attributes
Air
хотя я не понял как boolean 🤦‍♀️ вроде выдаю как попало, главное сохранить в этом типе
Alexandrr
т.е. в Документе нужной Подкатегории создаю Массив/Объект, где хранятся уникальные атрибуты для этой подкатегории
то есть в коде задаешь структуру с нужными полями, а при запросах пользователя берешь форму, проводишь по нужной структуре и получаешь то что нужно
Vladyslav
Коллекции или 1 коллекцию с документами?
Каждая категория - отдельная таблица
Алексей
Всем привет) Такой вопрос. Две коллекции, коллекции постов и комментариев. Можно ли как то при запросе определенного поста, получить комментарии которые к нему оставили. Я так понимаю только добавлять комментариям id поста, получать их, а потом добавлять массив комментариев в пост?
Алексей
$lookup вам в помощь если коллекции в одной БД
Да, в одной БД Спасибо большое, посмотрю
Александр
Не могу найти подтверждение, есть ли у монги проблема хранения дробных чисел с типом double вроде той которая описана в этом ответе https://stackoverflow.com/a/40986686/2170655 ?
Alexander
Не могу найти подтверждение, есть ли у монги проблема хранения дробных чисел с типом double вроде той которая описана в этом ответе https://stackoverflow.com/a/40986686/2170655 ?
Не совсем понятно в чем вопрос? То, что IEEE 754, описывающий хранение floating point numbers, не позволяет хранить дробные числа точно? Ну эта проблема в принципе характерна для всех баз данных и языков и программирования https://0.30000000000000004.com/. Поэтому и создан альтернативный формат decimal, который поддерживается MongoDB.
Alexander
Потому, что это разные числа. Если просто вводить 0.3 в памяти будет одно представление, достаточно близкое к настоящему 0.3, чтобы при выводе округлиться правильно. А если сложить 0.1 и 0.2, ошибка от настоящего 0.3 будет больше и при выводе не округлиться до 0.3, а до 0.30000000004
Александр
Потому, что это разные числа. Если просто вводить 0.3 в памяти будет одно представление, достаточно близкое к настоящему 0.3, чтобы при выводе округлиться правильно. А если сложить 0.1 и 0.2, ошибка от настоящего 0.3 будет больше и при выводе не округлиться до 0.3, а до 0.30000000004
вот в этом и вопрос, по ссылке есть пример с хвостом, а если проверить, то хвоста нет. почему? ответ по ссылке не корректный, или монга стала лучше представлять числа за прошедшие 6 лет. пример со сложением 0.1+0.2 дает меньшее значение хвоста чем по ссылке
Alexander
вот в этом и вопрос, по ссылке есть пример с хвостом, а если проверить, то хвоста нет. почему? ответ по ссылке не корректный, или монга стала лучше представлять числа за прошедшие 6 лет. пример со сложением 0.1+0.2 дает меньшее значение хвоста чем по ссылке
Очень даже хорошо вижу я этот хвост > db.coll.drop() > db.coll.insertMany([{a: Double(0.1), b: Double(0.2)}, {a: 0.1, b: 0.2}, {a: Decimal128("0.1"), b: Decimal128("0.2")}]) { acknowledged: true, insertedIds: { '0': ObjectId("64348d5865688dcca57c146a"), '1': ObjectId("64348d5865688dcca57c146b"), '2': ObjectId("64348d5865688dcca57c146c") } } > db.coll.aggregate({$set: {add: {$add: ["$a", "$b"]}, type: {"$type": "$a"}}}) { _id: ObjectId("64348d5865688dcca57c146a"), a: 0.1, b: 0.2, add: 0.30000000000000004, type: 'double' } { _id: ObjectId("64348d5865688dcca57c146b"), a: 0.1, b: 0.2, add: 0.30000000000000004, type: 'double' } { _id: ObjectId("64348d5865688dcca57c146c"), a: Decimal128("0.1"), b: Decimal128("0.2"), add: Decimal128("0.3"), type: 'decimal' }
Alexander
Вы про пример 9.99 со StackOverflow? Ну так там просто округление, я думаю. Никаких изменений с double в MongoDB не могло произойти потому, что они всегда были реализованы по стандарту IEEE 754
Air
Каждая категория - отдельная таблица
т.е. если будет 200 подкатегории = 200 коллекции? не перебор ли?
Air
то есть в коде задаешь структуру с нужными полями, а при запросах пользователя берешь форму, проводишь по нужной структуре и получаешь то что нужно
запрос пользователя - это тот миг между прошлым и будущим, когда он выбирает категорию/подкатегорию верно? под структурой подразумевается схема, т.е. использование Mongoose?
Alexander
запрос пользователя - это тот миг между прошлым и будущим, когда он выбирает категорию/подкатегорию верно? под структурой подразумевается схема, т.е. использование Mongoose?
Мне для этой задачи больше представляется использование наследования, где в базовом классе общие поля плюс подкатегория и для каждой подкатегории по своему подклассу. UI отрисовывается в зависимости от категории. Все хранится в одно коллекции, в конце концов именно для таких сценариев создавалась MongoDB.
Air
так нормально? отдавать фронту
Alexander
Дополнительные поля задаются в sub_categories.attributes? Нормальное решение, максимально гибкое
Air
Дополнительные поля задаются в sub_categories.attributes? Нормальное решение, максимально гибкое
Да (если правильно понял) А общие поля для всех другим документом отдавать фронту наверное
Вячеслав
Добрый день. Необходимо искать в коллекции документы по адресу электронной почты. В документах адрес почты может быть записан разными способами в плане регистра (например, Some.uSer@org.com). Вот таким образом я естественно всё не нахожу: db.collection.countDocuments({'email': 'some.user@org.com'}) Как в монго осуществляется регистронезависимый поиск ?
Сароар🧑🏼‍🦱
alif@SaroarMBProM1 mongodb % brew services list Name Status User File mongodb-community error 3584 root ~/Library/LaunchAgents/homebrew.mxcl.mongodb-community.plist /usr/local/var/mongodb/WiredTiger.turtle: handle-open: open: Permission denied"}
Сароар🧑🏼‍🦱
почему не работает я удаляю и переустанавливаю :(
Viktar
почему не работает я удаляю и переустанавливаю :(
Посмотрите права. Доступ запрещен ошибка
Сароар🧑🏼‍🦱
вот тепер новый
Сароар🧑🏼‍🦱
"msg":"Access control is not enabled for the database. Read and write access to data and configuration is unrestricted","tags":["startupWarnings"]} {"t":{"$date":"2023-04-11T16:44:19.392+03:00"},"s":"W", "c":"CONTROL", "id":22184, "ctx":"initandlisten","msg":"Soft rlimits for open file descriptors too low","attr":{"currentValue":256,"recommendedMinimum":64000},"tags":["startupWarnings"]} {"t":{"$date":"2023-04-11T16:44:19.395+03:00"},"s":"F", "c":"CONTROL", "id":20573, "ctx":"initandlisten","msg":"Wrong mongod version","attr":{"error":"UPGRADE PROBLEM: Found an invalid featureCompatibilityVersion document (ERROR: Location4926900: Invalid featureCompatibilityVersion document in admin.system.version: { _id: \"featureCompatibilityVersion\", version: \"4.4\" }. See https://docs.mongodb.com/master/release-notes/5.0-compatibility/#feature-compatibility. :: caused by :: Invalid feature compatibility version value, expected '5.0' or '5.3' or '6.0. See https://docs.mongodb.com/master/release-notes/5.0-compatibility/#feature-compatibility.). If the current featureCompatibilityVersion is below 5.0, see the documentation on upgrading at https://docs.mongodb.com/master/release-notes/5.0/#upgrade-procedures."}}
Nick
"msg":"Access control is not enabled for the database. Read and write access to data and configuration is unrestricted","tags":["startupWarnings"]} {"t":{"$date":"2023-04-11T16:44:19.392+03:00"},"s":"W", "c":"CONTROL", "id":22184, "ctx":"initandlisten","msg":"Soft rlimits for open file descriptors too low","attr":{"currentValue":256,"recommendedMinimum":64000},"tags":["startupWarnings"]} {"t":{"$date":"2023-04-11T16:44:19.395+03:00"},"s":"F", "c":"CONTROL", "id":20573, "ctx":"initandlisten","msg":"Wrong mongod version","attr":{"error":"UPGRADE PROBLEM: Found an invalid featureCompatibilityVersion document (ERROR: Location4926900: Invalid featureCompatibilityVersion document in admin.system.version: { _id: \"featureCompatibilityVersion\", version: \"4.4\" }. See https://docs.mongodb.com/master/release-notes/5.0-compatibility/#feature-compatibility. :: caused by :: Invalid feature compatibility version value, expected '5.0' or '5.3' or '6.0. See https://docs.mongodb.com/master/release-notes/5.0-compatibility/#feature-compatibility.). If the current featureCompatibilityVersion is below 5.0, see the documentation on upgrading at https://docs.mongodb.com/master/release-notes/5.0/#upgrade-procedures."}}
тут такто все написано что надо сделать, поднять лимиты, настроить версию совместимости
Viktar
"msg":"Access control is not enabled for the database. Read and write access to data and configuration is unrestricted","tags":["startupWarnings"]} {"t":{"$date":"2023-04-11T16:44:19.392+03:00"},"s":"W", "c":"CONTROL", "id":22184, "ctx":"initandlisten","msg":"Soft rlimits for open file descriptors too low","attr":{"currentValue":256,"recommendedMinimum":64000},"tags":["startupWarnings"]} {"t":{"$date":"2023-04-11T16:44:19.395+03:00"},"s":"F", "c":"CONTROL", "id":20573, "ctx":"initandlisten","msg":"Wrong mongod version","attr":{"error":"UPGRADE PROBLEM: Found an invalid featureCompatibilityVersion document (ERROR: Location4926900: Invalid featureCompatibilityVersion document in admin.system.version: { _id: \"featureCompatibilityVersion\", version: \"4.4\" }. See https://docs.mongodb.com/master/release-notes/5.0-compatibility/#feature-compatibility. :: caused by :: Invalid feature compatibility version value, expected '5.0' or '5.3' or '6.0. See https://docs.mongodb.com/master/release-notes/5.0-compatibility/#feature-compatibility.). If the current featureCompatibilityVersion is below 5.0, see the documentation on upgrading at https://docs.mongodb.com/master/release-notes/5.0/#upgrade-procedures."}}
У вас файлы данных от 4+ версии, а поставили 5+
Сароар🧑🏼‍🦱
поставили 6+
Сароар🧑🏼‍🦱
как это решать ?
Damir
Поставьте предыдущую версию, запустите монгу, проведите команду db.adminCommand( { getParameter: 1, featureCompatibilityVersion: 1 } ) , допустим у вас 4.4, далее проведите команду db.adminCommand( { setFeatureCompatibilityVersion: "5.0" } ) далее проверьте что все поменялось, Первой командой 4.4 должна поменяться на 5.0 остановите субд, обновите субд до след версии - 5.0.15 к примеру, проделайте эти же шаги только с 5.0 на 6.0
Сароар🧑🏼‍🦱
Андрей
Он 4.4 не поднимет на армовском яблоке по-моему, если память ни с кем не изменяет.
Андрей
Т.к. истории болезни нет вообще, а заход сразу с вопроса "почему кривая кобыла не везёт", то вангую, что надо пойти туда, откуда взялись файлы БД, на которых сейчас выполняется попытка поднять СУБД, сделать там элементарный дамп, и на последней версии на маке сделать рестор.
Viktar
как это решать ?
Ставьте 4+, что бы монга подхватила файлы. А там либо поднимайте совместимость, либо если база небольшая то через бекар ресторе загрузите в 6
Mars
Ребят привет! можнр ли логинится к базе на Атласе со свифта через телефон и смски?
Damir
Решено)
Сароар🧑🏼‍🦱
Решено)
Спасибо +++
Соня
Ребят, а кто-нибудь подключал к базе MongoDB Кафку через конфлюент? У вас было, что сообщения пропадали на Kafka и не доходили до consumer'а?
Александр
не могу понять можно ли и как, указать тип данных при вставке. Нагуглил, что можно делать так в mongosh: db.test.insertOne({"$date":{"$numberLong":"1565546054692"}}) но результат не тот который я ожидал { "_id": { "$oid": "6435f9908c6ae9227de93f1d" }, "$date": { "$numberLong": "1565546054692" } } можно ли как то решить эту задачу?
Александр
А что ты хочешь?
хочу чтобы в монге лежали с правильными типами
Dmitry
IsoDate
Dmitry
Как-то так называется
Dmitry
Либо когда через свой язык программирования отправляешь, то приведи к Date