Максим
Блин, это фигня.
Максим
Так а где лог то монговский сам?
Чайлд процесс фейлед. Такой лог был.
Андрей
В логе нет причины?
Андрей
Какая версия ОСи?
Максим
Какая версия ОСи?
Убунта 18. Сейчас обновился до 20, вечером буду смотреть.
Андрей
Убунта 18. Сейчас обновился до 20, вечером буду смотреть.
1. apt-get install libcurl4 openssl liblzma5 2. Качаете архив бинарников. 3. tar -zxvf mongodb-linux-*-4.4.1.tgz 4. Создаете путь для базы 5. Напиливаете конфиг 6. Стартуете и работаете Т.к. лога никто не увидел, то как бы вот.
Андрей
Starting in MongoDB 4.4, a startup error is generated if the ulimit value for number of open files is under 64000.
yopp
А вы пробовали по официальной инструкции для убунты ставить? https://docs.mongodb.com/manual/tutorial/install-mongodb-on-ubuntu/
Anton
Странно не могу найти как без костылей сделать update последнего документа в коллекции
Anton
Может кто знает
Максим
А вы пробовали по официальной инструкции для убунты ставить? https://docs.mongodb.com/manual/tutorial/install-mongodb-on-ubuntu/
Да. По ней и ставил. Несколько раз пытался. В итоге сервис фейлится и не запускается. Вот и пытаюсь выяснить в чём проблема. Сейчас попробую ещё раз поставить на 20ю убунту.
yopp
Вам необходимо выбрать поле для сортировки, отсортировать в обратном порядке и взять первый документ
Anton
У коллекций нет порядка
findAndModify позволяет только sort в параметр указать, без limit
Anton
в update вообще нельзя ничего из этого передать
yopp
findAndModify позволяет только sort в параметр указать, без limit
Although the query may match multiple documents, db.collection.findAndModify() will only select one document to modify.
yopp
Там есть sort
yopp
По этому полю можно сделать индекс с обратным порядком, тогда будет быстро
yopp
Но без транзакций, нет гарантии что выбранный документ действительно «последний»
yopp
Как впрочем и с транзакциями
Максим
А что в /var/log/mongod.log?
нет такого файла. и конфиг сам не создался
yopp
Вероятно у вас какие-то проблемы с правами при установке
Максим
Вероятно у вас какие-то проблемы с правами при установке
вот, хз почему так. устанавливаю как sudo
Максим
теперь вручную создавать папки логов, дата, и конфиг. А пользователя какого им ставить? mongodb? или своего юзера? облазил уже весь гугл.
Vadim
cat /etc/mongod.conf => systemLog: destination: file logAppend: true path: /var/log/mongodb/mongod.log Указан путь логов
Максим
Максим
теперь вручную создавать папки логов, дата, и конфиг. А пользователя какого им ставить? mongodb? или своего юзера? облазил уже весь гугл.
By default, MongoDB runs using the mongodb user account. If you change the user that runs the MongoDB process, you must also modify the permission to the data and log directories to give this user access to these directories.
Максим
ну вроде так и делал раньше
Андрей
Вот поэтому, когда понятия не имеете что и как оно делает при установке из реп и тем более спустя 2 дня вы только узнали, что у вас лог файла даже нет и конфига, делать нужно всё руками (либо собирать из сырцов либо на готовых бинах) под одной крышей удобно и просто, а не расплевывать по всей ФС бины, конфиги, логи, бд файлы и не знать что где лежит и зачем-то облазить весь гугл, когда всё делается как 2 пальца.
Андрей
Распакуйте бины, создайте конфиг, дир для бд и всё, дальше старт бина на конфиге
Андрей
От любого какого хошь юзера, у которого будут все права на каталог с базой и лог файл
Максим
вот лог сейчас {"t":{"$date":"2020-10-09T12:19:45.449+03:00"},"s":"I", "c":"CONTROL", "id":23285, "ctx":"main","msg":"Automatically disabling TLS 1.0, to force-enable TLS 1.0 specify --sslDisabledProtocols 'none'"} {"t":{"$date":"2020-10-09T12:19:45.522+03:00"},"s":"W", "c":"ASIO", "id":22601, "ctx":"main","msg":"No TransportLayer configured during NetworkInterface startup"} {"t":{"$date":"2020-10-09T12:19:45.522+03:00"},"s":"I", "c":"NETWORK", "id":4648601, "ctx":"main","msg":"Implicit TCP FastOpen unavailable. If TCP FastOpen is required, set tcpFastOpenServer, tcpFastOpenClient, and tcpFastOpenQueueSize."} {"t":{"$date":"2020-10-09T12:19:45.522+03:00"},"s":"I", "c":"CONTROL", "id":23330, "ctx":"main","msg":"ERROR: Cannot write pid file to {path_string}: {errAndStr_second}","attr":{"path_string":"/var/run/mongodb/mongod.pid","errAndStr_second":"No such file or directory"}}
Максим
оно что, не может свой пид записать?
Максим
оно что, не может свой пид записать?
блин, ей ещё и папку в ран создать нужно руками видимо и права дать..
Максим
Устанавливаю по оф доке. Что же я сделал не так?
Андрей
А демон автозапуска тоже руками писать?
Вы имеете ввиду инит, чтобы поднимали как service mongod start или о каком автозапуске речь? Никакого автозапуска применительно к БД! Хотя какие-нибудь девопсы могут с этим поспорить)
Максим
Распакуйте бины, создайте конфиг, дир для бд и всё, дальше старт бина на конфиге
распаковать можно в одну папку какуюто у пользователя и пользоваться? а тулзы тоже будут?
Максим
Никакого автозапуска применительно к БД! Почему?
Максим
при ребуте сервера руками поднимать бд каждый раз?
Андрей
распаковать можно в одну папку какуюто у пользователя и пользоваться? а тулзы тоже будут?
Тулзы для комьюнити версии могут быть отдельным архивом, уже и не помню точно, но да - всё под одним каталогом
Максим
почему?
Max
Приветствую! Подскажите, как в монге создать запрос: db.test.insertMany([ { name: "n1", a: 10, b: 20 }, { name: "n2", a: 30, b: 400 }, ]) , требуется найти все документы, где поле_a > (поле_b - 20) P.S. Нашел решение: db.test.find({"$expr": {"$gt": ["$a", {"$subtract": ["$b", 20]}]}})
Андрей
почему?
В смысле? Вы это делаете для поиграться/поучиться или для боя? Вам нужно остановить базу для каких-нибудь регламентов, что-то поконфигурить на "железке", перевалить систему, что-то еще поделать до того, как поднять бд, а у вас при каждом укладывании базы она будет автоматом подниматься. Хотя, может это я один здесь такой олдскульный, но мне это еще проблем не приносило.
Андрей
Вы про разные вещи спрашиваете - рега в системе инициализации для простого старта/стопа процесса и автостарт процесса субд
Максим
Всё, завелась. нужно было создать четыре папки и конфиг плюс поменять им владельца на монгу 😎
maxsimych
Привет, не совсем понял, то есть монгус рекомендует не использовать методы индекса в продакшене, а всё выставлять через mongodb shell/compass ?
Max
Подскажите, можно ли в монге в запросе использовать текущую дату и другое поле? Имеются данные: db.test.insertMany([ { name: "n1", interval: 10, checked_at: new ISODate("2019-10-10 12:12:12") }, { name: "n2", interval: 20, checked_at: new ISODate("2020-10-10 12:12:12") }, { name: "n3", interval: 30, checked_at: new ISODate("2020-10-10 12:12:12") }]) Требуется найти все документы, у которых checked_at старше, чем текущая дата минус кол-во секунд, которое в поле interval. Схематично запрос выглядит так: db.test.find({"checked_at": {"$lt": "$NOW - $interval(seconds)"}}) Обычно всегда когда работал с датами, саму дату я генерил на уровне приложения. А тут я это сделать не могу, так как надо отнять кол-во секунд, которое для каждого документа уникальна и лежит в поле $interval.
Андрей
не понял почему разные. системди и то и другое делает.
Автомобиль тоже может без водителя ездить, но эта функция существует отдельно. Работать со стартом/стопом процессов через систему инициализации также можно без автозагрузки. Поэтому отдельные друг от друга вещи.
Максим
Автомобиль тоже может без водителя ездить, но эта функция существует отдельно. Работать со стартом/стопом процессов через систему инициализации также можно без автозагрузки. Поэтому отдельные друг от друга вещи.
хорошо, если распаковать как вы говорите здесь — https://t.me/mongodb_ru/81777 у меня появится хоть одна из возможностей (старт\стоп или автозапуск)? наверное нет. тогда без разницы о старте или автозапуске я спрашиваю.
Максим
Спасибо всем за помощь!
Max
вам бы поле это добавить в котором уже раница храница времени и интервала
Хм. А как можно добавить поле, которое будет иметь значение NOW() - $interval. Это ж динамическое значение. На СО подсказали с решением: db.test.aggregate([ { $match: { $expr: { $lt: ["$checked_at", { $subtract: ["$$NOW", { $multiply: ["$interval", 1000] }] }] } } } ])
Максим
есть такой варнинг — Using the XFS filesystem is strongly recommended with the WiredTiger storage engine. See http://dochub.mongodb.org/core/prodnotes-filesystem Скажите насколько это важно? если не менять фс, просто будет медленее работать?
Max
вам бы поле это добавить в котором уже раница храница времени и интервала
С производительностью будет скорее всего беда при этом решении, индексы тут скорее всего не помогут. Но в моем случаее это не проблема, данных там не очень много. И поэтому добавить отдельное поле для решения вопроса производительности — это имело бы смысл. Но как можно добавить поле, которое зависит от текущего времени?
Pavlo
Всем привет, можно как то сделать запрос чтобы в ответ получить документ где в масиве нет какого то значения, то есть, { ... Likes : { .... users: [... ] } ... } И есть например юзер "vasya" как сделать запрос так чтобы если в масив есть юзер то ничего не вернуло а если нет, то вернуло, одним запросом ?
no
$in?
no
$nin?
Pavlo
$in?
Попробую щас
🔰ш
Всем привет! Как можно найти конкретные пересечения используя массив геометрий?
Pavlo
$nin?
Спасибо, все работает так как надо
🔰ш
То есть допустим есть схема типа: { geometries: [{geometry: polygon}, ...] } при запросе { geometries.geometry: { $geointersects: polygon } } выдача будет список документов, а хотелось бы как-то отфильтровать чтобы выдавались именно геометрии
🔰ш
Можно конечно сделать отдельную таблицу, где будет идти отношение геометрий к документам, но нафиг мне тогда документоориентированная субд?)
🔰ш
Думаю тут запрос не специфичен для геометрии, есть ли в принципе способ выдать в результатах поиска именно nested документы?
Евгений
добрый день есть простой запрос $cursor = $mongo->find(array( 'friends' => $friend_id, ),array( 'sort' => array( '_at' => 1, ) )); странная ситуация - при разных значениях $friend_id то работает, то нет ошибка такая failed to send find command with database socket error or timeout я бы понял, если бы ошибка выскакивала при любом значении, но нет при большинстве значений все нормально, а при некоторых, я даже отправить запрос не могу кто-то может подсказать, в чем дело?