Artem
/var/log/syslog
Aug 6 23:49:47 dedicated kernel: [81893.117646] [UFW BLOCK] IN=eth0 OUT= MAC=ee:fe:79:fd:cd:41:88:62:7b:fd:be:90:08:00 SRC=178.20.136.84 DST=178.20.156.153 LEN=40 TOS=0x00 PREC=0x00 TTL=240 ID=61420 DF PROTO=TCP SPT=47826 DPT=7547 WINDOW=14600 RES=0x00 SYN URGP=0 Aug 6 23:50:01 dedicated CRON[2969]: (root) CMD (/usr/bin/mongodump --out /data/mongobackups/`date +")
Artem
mongodump --out /data/mongobackups/date +"%m-%d-%y" 2> /var/log/mongo.log
Artem
mongodump --out /data/mongobackups/date +"%m-%d-%y" 2> /var/log/mongo.log
Aug 6 23:59:01 dedicated CRON[3410]: (root) CMD (/usr/bin/mongodump --out /data/mongobackups/`date +") Aug 6 23:59:07 dedicated kernel: [82453.303231] [UFW BLOCK] IN=eth0 OUT= MAC=ee:fe:79:fd:cd:41:88:62:7b:fd:be:90:08:00 SRC=95.209.133.119 DST=178.20.156.153 LEN=44 TOS=0x08 PREC=0x20 TTL=52 ID=36535 PROTO=TCP SPT=1732 DPT=8001 WINDOW=56642 RES=0x00 SYN URGP=0
Artem
с самой командой mongodump --out /data/mongobackups/`date +"%m-%d-%y"` всё норм
AstraSerg
@verbat В кроне нужно указать имя пользователя, от которого будет выполняться команда. То есть нужно: * * * * * root mongodump ... если это крон из /etc а не пользовательский. Второе, вам нужно экранировать знаки % По дефолту они конвертируются в перевод строки
Anton
Здравствуйте, не могу разобраться, как в mongoose 5.2.6 откатить транзакцию?
Anton
В документации этот момент как-то обошли
Anatoliy Skuratov
Здравствуйте, не могу разобраться, как в mongoose 5.2.6 откатить транзакцию?
Session.abortTransaction() - скоре всего так. В node.js драйвере он используется https://docs.mongodb.com/master/core/transactions/#retry-transaction-and-commit-operation
Anton
Session.abortTransaction() - скоре всего так. В node.js драйвере он используется https://docs.mongodb.com/master/core/transactions/#retry-transaction-and-commit-operation
Спасибо, я функцию находил в исходниках, но не понял как использовать сессию
Anton
А на не реплике базы использовать вообще нельзя? Из-за чего вообще такое ограничение?
yopp
Anton
реплику пропустили
yopp
Окей, но всё ещё не понятно что вы имеете ввиду :)
Anton
"Multi-document transactions are available for replica sets only." А у меня одна база. без реплик
Anton
О репликах буду думать когда что-то начнёт работать
yopp
Архитектурное ограничение.
AstraSerg
О репликах буду думать когда что-то начнёт работать
Это зря, сначала базис настройте, а потом уж более высокие уровни
Anton
Чтобы строить базис надо в этом разбираться хорошо. А заказчику затраты на базис несколько не понятны, ему побыстрее надо MVP
yopp
https://youtu.be/mUbM29tB6d8
yopp
Если интересно откуда это ограничение возникает
yopp
У вас есть несколько вариантов: 1) пересмотреть архитектуру, убрав необходимость в транзакциях. Это возможно гораздо чаще чем кажется 2) Посчитать операционные ресурсы. На первых этапах, особенно если вы делаете MVP, DBaaS будут существенно дешевле и гибче, нежели in-house содержание. Репликация нужна не только для транзакций, но и для сокращения времени простоя и снижения вероятности фатальной потери данных. 3) Выбрать другую СУБД
Varg
Привет Помогите плиз с проблемкой разобраться: https://toster.ru/q/552594
AstraSerg
Привет Помогите плиз с проблемкой разобраться: https://toster.ru/q/552594
Попробуйте вот здесь: newOrders.item = db.inventory.findOne({"sku": newOrders.item}); заменить: var ord = db.inventory.findOne({"sku": newOrders.item});
AstraSerg
похоже у вас newOrders.item - undefined
Varg
попробовал просто вывести через printjson json выводит, но ошибка всё равно есть
Varg
похоже у вас newOrders.item - undefined
почему так может быть?
AstraSerg
а во всех документах коллекции orders есть поле item? если нет, то будет undefined
Varg
не во всех
Varg
то есть если в item будет null, то будет ошибка, верно?
AstraSerg
не во всех
Вот оно и спотыкается на документах, где нет
Varg
понял
Varg
спасибо большое
AstraSerg
спасибо большое
да не за что :)
Varg
:)
Varg
и еще вопрос: пытаюсь поставить индексы на нужных полях db.Ways.ensureIndex({nds: {reference: 1}}) но выкидывает ошибку: { "ok" : 0, "errmsg" : "Values in v:2 index key pattern cannot be of type object. Only numbers > 0, numbers < 0, and strings are allowed.", "code" : 67, "codeName" : "CannotCreateIndex" } что не так может быть? в гугле нашел подобные кейсы https://stackoverflow.com/questions/31772759/getting-bad-index-key-pattern-error-using-mongodb но это всё не то
Varg
Varg
используйте dot notation nds.reference
сработало, спасибо! где вообще можно почтить про то в каких местах нужно использовать одну нотацию, а в каких другую? или это созидается только курением доки?
yopp
лучше всегда стараться использовать dot notation, если вы не оперируете хешами целиком
yopp
foo.bar: 1 != foo: {bar: 1}
Varg
хм понял
Varg
спасибо еще раз
yopp
Stable: 4.0.1 (Aug 6, 2018) Bugfix: 3.6.6 (Jul 10, 2018), Legacy: 3.4.16 (Jul 10, 2018) MongoDB quick overview/production notes: https://www.percona.com/live/e17/sites/default/files/slides/Running%20MongoDB%20in%20Production%20-%20FileId%20-%20115299.pdf 4.0.1: https://docs.mongodb.com/manual/release-notes/4.0/#aug-6-2018 3.6.6: https://docs.mongodb.com/manual/release-notes/3.6/#jul-10-2018 3.4.16: https://docs.mongodb.com/manual/release-notes/3.4/#jul-10-2018 3.2.20: https://docs.mongodb.com/manual/release-notes/3.2/#may-10-2018 (End of life: September 2018) 3.0.x: Support ended February 2018
Владислав
Ахахах
Stas
Всем привет, ребят, не подскажите как проверить кодировку бд?
Stas
Так utf-8 всегда вроде...
та уже в доке нашёл, строка по умолчанию ютф-8, просто нужно было удостовериться, спасибо
Stanislav
Пожскажите, у меня на некотором стейдже аргегейшн пайпайна получается множесто объектов вида { sub: [ {param1:.. , param2:..} ] }, где sub -- массив размера 1 или пустой. Как можно превратить эти объекты в такой вид: { param2: ... } ?
Stanislav
Идею понял, спасибо. Но немного не то. Уточню вопрос. У меня объекты вида { key1: .., key2: .., sub: [ {param1:.. , param2:..} ] } Я хочу взять из sub только одно значение и вставить его в исходный документ. чтобы получилось { key1: .., key2: .., param2:.., sub: [ {param1:.. , param2:..} ] } А лишний саб я потом уберу в $project, напрмер
Stanislav
я думал про такой вариант: { $replaceRoot: { newRoot: { $mergeObjects: [ { $arrayElemAt: [ "$sub", 0 ] }, "$$ROOT" ] } } }, но тогда надо будет разруливать ситуацию, когда в сабе содержатся те же самые ключи
Stanislav
Хочется что-то типа { $addFields: {$get: ["param2", { $arrayElemAt: [ "$sub", 0 ] }] }
Stanislav
но в монге нет оператора $get ) а подходящий не могу найти
Pavel
Добрый вечер. Работаю над полем createdBy схемы. Родительская схема имеет множество сабсхем в которых тоже встречается поле createdBy. В этом поле лежит id пользователя который создал данную сущность. Хочу автоматически записывать значение в это поле на уровне генерирования схемы, а не на уровне роутов и методов create(), uodate() и тд. Для этого я применяю плагин к mongoose схеме который ловит хуки и проставляет значения к нужным полям. Но вот незадача Инициализация схемы идет перед тем как приходит запрос. Поэтому на уровне создания схемы у меня не получается прописать id юзера. Как можно разрешить данную ситуацию? Или в данном случаем мне нужно внеднять поле createdBy на уровне роутера?
Pavel
Pavel
Stanislav
$sub.0.param2
{ $addFields: {param2: "$sub.1.param2"} } -- если вы про такое, то оно не работает почему-то
Stanislav
поэтому я и начал капать в сторону { $arrayElemAt: [ "$sub", 0 ] }
Stanislav
о, придумал ответ { $addFields: {param2, { $arrayElemAt: [ "$sub.param2", 0 ] } }
Pavel
(если вдруг кому понадоблится)
Avral
Привет, есть сервис который пишет в монгу, json строкой. Нужно со стороны как нибудь пропарсить этот json и сохранить как ключ-значение, и делать это для последующих записей. Как можно реализовать?
Avral
Написать скрипт, который прочитает эту строку, распарсит его в json и обновит документ
Не подскажете, на питоне либу, где можно подписаться на изменения в определенной коллекции
yopp
официальный драйвер должен уметь
yopp
и нужно иметь монгу 3.6+
yopp
но надежнее исправить это в том месте, откуда данные в монгу попадают
Avral
эт да, но тут так получается, что проще самому это со стророны делать, спасибо
Constantin
Подписаться можно только на capped collections
Constantin
Как вариант раз в какое-то время по крону запрашивать поле, если оно не нул, парсить, поле со строкой помечать как null после парсинга
Stanislav
Не подскажете, на питоне либу, где можно подписаться на изменения в определенной коллекции
я не уверен, как в питоне. Но в джаве с монгодрайвером поставляется bson-mapper, который умеет перегонять json-строку в аналогичный bson
AstraSerg
я не уверен, как в питоне. Но в джаве с монгодрайвером поставляется bson-mapper, который умеет перегонять json-строку в аналогичный bson
В питоне тоже есть конвертация: http://api.mongodb.com/python/current/api/bson/json_util.html Да только вопрос у @Avral -а не в конвертации, а в парсинге с изменениями. Если измениня не нужны, то инсерить можно просто json.
Vasiliy
подскажите, а как в projection после find сделать чтобы из подмасива отображались только отфильтрованные данные, т.е как elemMatch только не первый элемент, а все подходящие под условие
Constantin
Подписаться можно только на capped collections
Вот кстати насчет этого, кто-нибудь может слышал, будут они что-то такое делать для обычных коллекций, как в RethinkDB? Сейчас приходится диспатчер-сервис держать, и все изменения через него пускать, а это дополнительны сокеты/кодовая база/абстракции