Alexander
Спасибо, значит откажусь от идеи с инстансами документа на всякий случай. Хотя вообще они выглядят довольно удобно.
Nick
Стоит поглядеть на транзакции, либо простроить все возможные варианты измения данных и организовать нечто идемпотентное
yopp
Коллеги, привет. У меня есть Unifi controller от Ubiquiti , в нем для хранения различной статистики используется Mongo 3.4.18, по утилизации ресурсов хост машины проблем нет, оперативной памяти из 12 гигов свободно 4, нагрузка на CPU низкая, места разделе где находится БД достаточно. В последнее время замечено что mongo.log по нескольку раз в день вываливаются сообщения вида : 2019-06-18T22:46:34.036+0300 I COMMAND [ftdc] serverStatus was very slow: { after basic: 0, after asserts: 0, after backgroundFlushing: 0, after connections: 0, after dur: 0, after extra_info: 0, after globalLock: 0, after locks: 0, after network: 0, after opLatencies: 0, after opcounters: 0, after opcountersRepl: 0, after repl: 0, after security: 0, after storageEngine: 0, after tcmalloc: 0, after transportSecurity: 0, after wiredTiger: 0, at end: 2740 } ulimit -a core file size (blocks, -c) 0 data seg size (kbytes, -d) unlimited scheduling priority (-e) 0 file size (blocks, -f) unlimited pending signals (-i) 31157 max locked memory (kbytes, -l) 64 max memory size (kbytes, -m) unlimited open files (-n) 1024000 pipe size (512 bytes, -p) 8 POSIX message queues (bytes, -q) 819200 real-time priority (-r) 0 stack size (kbytes, -s) 8192 cpu time (seconds, -t) unlimited max user processes (-u) 65536 virtual memory (kbytes, -v) unlimited file locks (-x) unlimited Помогите понять что это за ошибка и как ее исправить ?
Это не ошибка.
yopp
Это уведомление о медленном запросе. Положите эти сообщения на графики загруженности и посмотрите, нет ли в этот момент пиков
yopp
Я имею ввиду, что пока я работаю над одним инстансом - данные в нём уже могли устареть, потому что их изменили где-то в другом месте. Спасёт ли от этого повсеместное использование updateOne или это совсем по другому нужно решать?
Это в первую очередь зависит от вашей бизнес-логики. Поймите какие гарантии вам нужны, какие типы конфликтов могут быть, если вообще могут быть и будет понятнее какой из доступных вариантов выбрать. В целом либо блокировки/транзакции, либо атомарные обновления
Alexander
Это в первую очередь зависит от вашей бизнес-логики. Поймите какие гарантии вам нужны, какие типы конфликтов могут быть, если вообще могут быть и будет понятнее какой из доступных вариантов выбрать. В целом либо блокировки/транзакции, либо атомарные обновления
Кстати, о транзакциях и атомарности. Я прочел, что Монго - не очень подходит для обратимых транзакций. То есть в случае, если мне нужно за один присест обновить несколько документов, такая операция уже никак не будет атомарной, и нет возможности объеденить операцию в одну обратимую транзакцию? Вдруг во время обновления второго документа что-то пойдёт не так. Или есть какой-то готовый обходной путь на такой случай? UPD. Извиняюсь, видимо старые данные читал. Нашёл механизм транзакций в новых версиях Монго.
Roman
Привет! Подскажите, пожалуйста, где можно почитать об архитектурных решениях для mongodb?
MⅨ
Как понимать upserted? resolver: .findOneAndUpdate( { '_id': projectId, }, { '$pull': { 'tasks': { '_id': taskId } } } ) ok и lastErrorObject: { "ok": 1, "errorMessage": "{\"n\":1,\"updatedExisting\":true,\"upserted\":\"5d08ece84f14172cd4d17933\"}" }
Roman
http://bfy.tw/OCL3
Это круто. Я даже о такой штуке не знал. Спасибо!
yopp
http://bfy.tw/OCL3
В этой группе не принято посылать в гугл. Это токсична практика, которая не несёт пользы участникам и только отнимает их время. Знаете где в документации ответ на вопрос — даёте ссылку на документацию. Не хотите сами гуглить, пройдите мимо. В следующий раз r/o на месяц.
Даниил (Onix)
Друзья, всем привет. Подскажите пожалуйста, если я пишу net start MongoDB то служба будет остановлена после того как компьютер будет перезагружен или выйдет из сна? Ну т.е. вот у меня на ноуте я набирал нет старт МонгоДБ когда-то. Сейчас захотел службу запустить, а консоль говорит что уже запущено.
yopp
Друзья, всем привет. Подскажите пожалуйста, если я пишу net start MongoDB то служба будет остановлена после того как компьютер будет перезагружен или выйдет из сна? Ну т.е. вот у меня на ноуте я набирал нет старт МонгоДБ когда-то. Сейчас захотел службу запустить, а консоль говорит что уже запущено.
Если мне память не изменяет, то служба стартует вместе с системой. Т.е. после перезагрузки монга будет автоматически запущена. См https://docs.mongodb.com/v3.2/tutorial/install-mongodb-on-windows/#manually-create-a-windows-service-for-mongodb-community-edition
Даниил (Onix)
хотя немного схитрили они - я нигде упоминания про это не видел... (хотя я по монге и не читал почти ничего, ради справедливости стоит сказать)
Gаrblоvian
Друзья, привет! Мне тут выдалось оптимизировать систему подписчиков, подписок и френдинга. Ни у кого под рукой нет ссылки на максимально приемлемую схему? Нашел вот что-то такое, например. И в основном натыкаюсь на инфу, что лучше не делать френдинг в mongo 😃
Олег
подкажите куда копать суть ситуации создал запрос на обновление документа, выполнил, монга в ответ выдала { n: 1, nModified: 1, ok: 1 } захожу в БД, а там этого изменения по факту нет как разруливаются такие фичи?
Farik
Подскажите как правильно реализовать архитектуру (вплане создания дб колекции), только изучаю монго пока через Studio 3T сложновато)
Farik
До этого на MySQL делал
Ilya
у коллекций можно описать схему, а так каждый документ в монге может иметь любые поля которые не обязательно будут совпадать с полями в другом документе
Farik
Понял спасибо
Farik
т.е. поля визуально я могу увидеть только в схеме
Ilya
ну схему вы задаете сами, для коллеции, и если создать документ с полем которого нет в схеме то схема не поменяется. то есть вы же проектируете сервис, почему у вас возникает потребность смотреть какие там поля?
Farik
Наверное потому-что привык)
Farik
Из за phpmyadmin
Farik
Ну с этим теперь стало намного понятнее)
Nick
т.е. поля визуально я могу увидеть только в схеме
Схем ака структура таблицы в монге нет, они только в вашем софте.
Romuald
Можно больше подробностей?
Есть пример, как реализована часть update записи
Олег
Олег
там как обычно, через set
Олег
определенное поле
Олег
Model.update({login},{$set:{rate:[...]}}) как то так
Олег
обычно монга пишет такой ответ(пример выше), когда данные действительно были изменены ... но в этот раз меня удивила
Askat
Как можно добавить поиск по keywords и вывести это в браузере . Допустим : localhost:3000/place?search=russia
Nick
Как можно добавить поиск по keywords и вывести это в браузере . Допустим : localhost:3000/place?search=russia
Вытащить данные из запроса и отобразить это к вашем вебфреймворку. Запрос к монге это уже предметнее и впринципе делается по туториалам к вашему драйверу
Roman
приветы! я делаю аггрегацию: await db.models.internalStats.collection.aggregate({ $match: { type: 'viewed_v2', date: { $gt: new Date().getTime() - 60 * 60 * 1000 } } }, { $group: { _id : null, sum: { $sum: '$count' } } }); и в робомонго получаю sum, а в ноде при вызове .toArray(); просто получаю массив документов и никакого sum
Roman
как получить тот же результат что и в robo 3t?
Roman
Так вытащите данные из первого объекта в массиве
данные агрегации не возвращаются
Roman
возвращаются документы отвечающие матч
Nick
Т.е. Без стадии группиповки?
Roman
da
Nick
da
А добавьте квадратные скобки
Nick
Похоже вютолько первый матч воспр нимается как пайплайн
p
Всем привет! Подскажите, как дамп монги в виде набора json файлов восстановить в докер контейнере с монгой. Получается только восстановить дамп сделаный с параметром —archive в один файл: docker exec -i mongo12 sh -c "mongorestore --archive --drop" < C:\data\mongo\dump
p
json восстанавливается через mongoimport. В монге две пары инструментов dump/restore для дампов в bson и export/import для прочих форматов
еще появился флаг —archive с которым dump в один файл делается. перенести базу в контейнер докера у меня только с ним получилось
p
может можно было через импорт/экспорт, но описаний не нашел в сети
Den
Alex
Unwind + group должны решить
Alex
Плюс минус так https://code-maven.com/slides/mongodb/mongodb-aggregation-example-23
Fire Walker
Всем привет!
Fire Walker
Есть какие-то правила, с которыми надо ознакомиться?
Fire Walker
Хорошо, буду просто вежлив) Вопрос следующий: я использую MongoDB для своих проектов, в одном из них приходится достаточно часто (ежечасно) обновлять информацию. Информацию я получаю из json-файлов, которые формируются через питон. Вопрос следующий: как можно обновлять специфические документы в коллекции Монго, давая на вход json-файлы (условный mongoimport для обновлений)? Спасибо!
Fire Walker
https://docs.mongodb.com/manual/reference/command/update/#dbcmd.update ?
Спасибо! Тогда переформулирую вопрос (так как update я видел): можно ли в апдейт дать ссылку на файл (именно example.json), и если да - то как?
Dmitriy
про ссылку не скажу, тут я думаю сильно может зависеть от реализации драйвера, но по идее вы же можете считать содержимое файла в переменную и передать ее в update уже как есть
Fire Walker
У меня файл может быть до 13 мегабайт и 15 тысяч строк, вопрос в надежности такого считывания. Пока приходится сносить и перезагружать всю коллекцию
Dmitriy
хм, вопрос в том на сколько вам нужно делать заливку именно через код. выглядит так, что оптимальней будет сформировать большой файл, положить его на диск и сделать mongoimport по крону с затеранием загруженного файла. это даст вам профит по оперативной памяти как минимум
Артем
Парни, подскажите плз) хотим перевесить монгу на другой сервер, как это сделать максимально быстро? Просто скопировать папку data норм тема? Версии одинаковые
Ivan
Если нет, то можно перенести просто, если да, то в rs.conf поменять потом данные, имя и адрес, где мембер живет
Артем
Спасибо/
Артем
Реплики нет
Anonymous
господа, что за шляпа: запускаю mongorestore.exe --drop --archive C:\Users\asa\Documents\Bugs\file.db --gzip и ничего не происходит, оно тупо висит. Диспетчер задач показывает, что процесс mongorestore.exe использует 0 cpu
Anonymous
ок я врубился. там надо --archive=... убейте плж
Даниил (Onix)
Ребят, тут кто-нибудь с bcrypt работал? Почему у меня фолс? bcrypt.compare("123", "123", function(err, isMatch) { console.log(isMatch); });
Alex
// Load hash from your password DB. bcrypt.compare(myPlaintextPassword, hash, function(err, res) { // res == true }); bcrypt.compare(someOtherPlaintextPassword, hash, function(err, res) { // res == false }); https://www.npmjs.com/package/bcrypt
Даниил (Onix)
надо сравнивать плейн значение с bcrypt хэшем
console.log("pass = " + candidatePassword ); console.log("hash = " + hash); pass = 1234 hash = 1234
Даниил (Onix)
это норм что у меня в хэше передаётся так? в базе лежит шифрованным
Alex
bcrypt.hash генерит хэш этот хэш надо передавать вторым аргументов в bcrypt.compare
Alex
console.log("pass = " + candidatePassword ); console.log("hash = " + hash); pass = 1234 hash = 1234
тут pass=1234, его hash определенно не 1234. поэтому compare выдаст false
Даниил (Onix)
bcrypt.compare("1234", "$2a$10$EZ.RikbIiXZ0MAHImblMO.QKPh63i71UHlS6euUx.UELrT7fIGuhy", function(err, isMatch) {\ console.log(isMatch); }); вернул фолс