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
В документации этот момент как-то обошли
Anton
Anton
А на не реплике базы использовать вообще нельзя? Из-за чего вообще такое ограничение?
yopp
Anton
реплику пропустили
yopp
Окей, но всё ещё не понятно что вы имеете ввиду :)
Anton
"Multi-document transactions are available for replica sets only." А у меня одна база. без реплик
Anton
О репликах буду думать когда что-то начнёт работать
yopp
Архитектурное ограничение.
Anton
Чтобы строить базис надо в этом разбираться хорошо. А заказчику затраты на базис несколько не понятны, ему побыстрее надо MVP
yopp
https://youtu.be/mUbM29tB6d8
yopp
Если интересно откуда это ограничение возникает
yopp
У вас есть несколько вариантов:
1) пересмотреть архитектуру, убрав необходимость в транзакциях. Это возможно гораздо чаще чем кажется
2) Посчитать операционные ресурсы. На первых этапах, особенно если вы делаете MVP, DBaaS будут существенно дешевле и гибче, нежели in-house содержание. Репликация нужна не только для транзакций, но и для сокращения времени простоя и снижения вероятности фатальной потери данных.
3) Выбрать другую СУБД
Varg
Привет
Помогите плиз с проблемкой разобраться: https://toster.ru/q/552594
Varg
AstraSerg
похоже у вас newOrders.item - undefined
Varg
попробовал просто вывести через printjson
json выводит, но ошибка всё равно есть
Varg
AstraSerg
а во всех документах коллекции orders есть поле item? если нет, то будет undefined
Varg
не во всех
Varg
то есть если в item будет null, то будет ошибка, верно?
AstraSerg
не во всех
Вот оно и спотыкается на документах, где нет
Varg
понял
Varg
спасибо большое
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
yopp
Varg
используйте dot notation nds.reference
сработало, спасибо!
где вообще можно почтить про то в каких местах нужно использовать одну нотацию, а в каких другую? или это созидается только курением доки?
yopp
лучше всегда стараться использовать dot notation, если вы не оперируете хешами целиком
yopp
foo.bar: 1 != foo: {bar: 1}
Varg
хм
понял
Varg
спасибо еще раз
AstraSerg
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
Varg
Sebor▂▅▇█▓▒░
AstraSerg
Владислав
Ахахах
Stas
Всем привет, ребят, не подскажите как проверить кодировку бд?
AstraSerg
Stanislav
Пожскажите, у меня на некотором стейдже аргегейшн пайпайна получается множесто объектов вида { sub: [ {param1:.. , param2:..} ] }, где sub -- массив размера 1 или пустой.
Как можно превратить эти объекты в такой вид: { param2: ... } ?
yopp
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
yopp
Pavel
Stanislav
$sub.0.param2
{ $addFields: {param2: "$sub.1.param2"} } -- если вы про такое, то оно не работает почему-то
Stanislav
поэтому я и начал капать в сторону { $arrayElemAt: [ "$sub", 0 ] }
Stanislav
о, придумал ответ
{ $addFields: {param2, { $arrayElemAt: [ "$sub.param2", 0 ] } }
Pavel
Pavel
(если вдруг кому понадоблится)
Avral
Привет, есть сервис который пишет в монгу, json строкой. Нужно со стороны как нибудь пропарсить этот json и сохранить как ключ-значение, и делать это для последующих записей. Как можно реализовать?
yopp
yopp
официальный драйвер должен уметь
yopp
и нужно иметь монгу 3.6+
yopp
но надежнее исправить это в том месте, откуда данные в монгу попадают
Avral
эт да, но тут так получается, что проще самому это со стророны делать, спасибо
Constantin
Подписаться можно только на capped collections
Constantin
Как вариант раз в какое-то время по крону запрашивать поле, если оно не нул, парсить, поле со строкой помечать как null после парсинга
Vasiliy
подскажите, а как в projection после find сделать чтобы из подмасива отображались только отфильтрованные данные, т.е как elemMatch только не первый элемент, а все подходящие под условие
Constantin
Подписаться можно только на capped collections
Вот кстати насчет этого, кто-нибудь может слышал, будут они что-то такое делать для обычных коллекций, как в RethinkDB?
Сейчас приходится диспатчер-сервис держать, и все изменения через него пускать, а это дополнительны сокеты/кодовая база/абстракции