
Nick
19.06.2018
21:08:49
js is base to learn node.js, node.js is base to create you web (http) server application. It's really simple with node.js but you should learn it before use databases.

Nklya
19.06.2018
21:09:31

Ak47
19.06.2018
21:10:29
ooh no problem i used Mongodb to but i just wanted to ask a question sorry

Nick
19.06.2018
21:11:22
I'm not the only one, I think other people don't read chat all time. Moreover your question is offtop. So if you need some help with mongodb there is english mongodb group https://t.me/mongo_db

Google

Ak47
19.06.2018
21:11:51

Nick
19.06.2018
21:13:51
And when you will with electron you can google "how to work node.js and $some_shit" it should give more answers than only electron+some_shit

Ak47
19.06.2018
21:16:27


Andruha
20.06.2018
07:52:27
Всем привет. Юзаю монгуз. Есть модель:
const game = new Schema(
{
name: {
type: String,
required: true
},
items: [
{
item: {
type: Schema.Types.ObjectId,
ref: 'item'
},
order: {
type: Number,
default: 0
}
}
]
}
);
Когда обновляется коллекция 'item', например, какие-то доки в ней удаляются, соответственно я хочу, чтобы эти же доки удалялись и в items в модели game.
Делаю так - удаляет вообще все из items в модели game:
await Game.update({ _id: id }, { $pull: { items: { item: { $nin: items } } } });
Вот так работает:
const game = new Schema(
{
name: {
type: String,
required: true
},
items: [{
type: Schema.Types.ObjectId,
ref: 'item'
}]
}
);
await Game.update({ _id: id }, { $pull: { items: { $nin: items } } });
Но мне нужен именно первый вариант модели для реализации ручной сортировки items внутри game.
Ну и сам вопрос - почему в первом варианте не работает корректно $pull, что я делаю неправильно? Заранее спасибо.


headbody
20.06.2018
08:33:01
Простите, но я совсем скрипт кидди и буду задавать совсем глупые вопросы, да я пробовал гуглить, голова пока кругом идёт.
Мне нужно конвертировать файлы из csv в json, какие утилиты для этого есть, чтобы mongo корректно кушал json?
Ибо пока что я как лох пользуюсь http://www.convertcsv.com, потому что там есть отдельная удобная кнопочка под монго, но вебом не всегда удобно пользоваться.

Slava
20.06.2018
09:44:06
забавно, vscode выпустили апдейт в котором теперь можно работать с монгой прямо из vscod'a
https://code.visualstudio.com/docs/azure/mongodb

Andruha
20.06.2018
09:45:31

Slava
20.06.2018
09:46:14
еще не успел

Andruha
20.06.2018
10:07:49
еще не успел
ну как-то работает, данные показывает, хз насколько хватит функционала, надо будет еще покурить настройки и возможности

M
20.06.2018
15:59:29
Ребят, есть какие-то предпосылки не ставить mongo в проде в docker/kubernetes

Stepan
20.06.2018
16:00:09
я слыхал, что в докере другая файловая система и могут быть проблемы
но о конкретных случаях не слышал

Oleg
20.06.2018
16:01:28

Google

M
20.06.2018
16:01:56

Oleg
20.06.2018
16:02:12

Ruslan
20.06.2018
16:02:35

Oleg
20.06.2018
16:03:27
настроить кибернетс\ранчер это муторная тема
чтоб это все балансилось, контейнеры линковались и писали в нужный файловый драйвер

M
20.06.2018
16:04:11
получается предпосылок НеДелать этого нет?

Oleg
20.06.2018
16:05:19
продакшеном правит бизнес
если у вас 3 физических хоста
то быстрее и следовательнее дешевле не парится с этим
или пользоваться просто докером с докер-компоуз

M
20.06.2018
16:05:57

Oleg
20.06.2018
16:06:40

M
20.06.2018
16:06:56

Oleg
20.06.2018
16:07:05
есть время\ресурсы потратить пару недель?

M
20.06.2018
16:07:09
потенциально будет полтора человека

Oleg
20.06.2018
16:08:30
в принципе можно попробовать ранчер, он для старта попонятнее чем кибернетс

M
20.06.2018
16:08:31

Oleg
20.06.2018
16:09:22
может здесь есть народ с терабайтами :)
у меня просто немного другой стек
и данные не основной продукт
микросервисы и парочку крупных приложений в купе с дб

M
20.06.2018
16:10:34
кстати кто знает про драйвера, как быстро они понимают что мастер поменялся?

yopp
20.06.2018
16:30:08
Контейнеризация подразумевает stateless приложения. А базы данных statefull и с высокими требованиями к скорости и пропускной способности файловой системы.
Вторая проблема: failover и scalability. Так как шедулер контейнеров обычно ничего про состояние приложения не знает, он может начать совершать действия которые приведут к отказу кластера.
Или что хуже — к потере данных.

Google

yopp
20.06.2018
16:35:21
Могу дать два совета: не использовать шедулеры для контейнеров с базой данный и не использовать виртуальных или сетевых файловых систем, особенно если они поддерживают миграцию томов между контейнерами.
Не слежу за последними наработками в этой области, может быть что-то изменилось.
Я пытался несколько лет назад ранчеровский cattle с монгой подружить — не смог.
Результат всегда был примерно один: шедулер тем или иным образом вместо работающие реплики деплоил пустую.
Реально весь процесс выборов займёт несколько секунд, после чего все клиенты закроют соединения и откроют их снова. Переключения без даунтайма кажется всё ещё не завезли.

M
20.06.2018
16:41:00

yopp
20.06.2018
16:42:33
Вы говорите загадками
Кто «все» и что «кричали»?

M
20.06.2018
16:45:27

yopp
20.06.2018
16:48:01
Если вы будете говорить не загадками и абстракциями, а конкретными фактами, возможно, вам тут помогут. Иначе ??♀️

Nick
20.06.2018
16:51:05

M
20.06.2018
16:57:22

Nick
20.06.2018
16:57:55
потому что никто не дает гарантий о рабоспособности кластера если помирает нод больше чем простое большинство
есть такая проблема split brain и она ограничивает допустимое количество мгновенно умирающих нод

M
20.06.2018
16:59:50

Nick
20.06.2018
17:00:25
@dd_bb кстати а монга переживет если убивать по одной ноде после каждый выборов?

M
20.06.2018
17:02:15

Nick
20.06.2018
17:02:38
потому что у нее прописано что их было больше двух

M
20.06.2018
17:02:43
я пологал что такое поведение должно быть, выбрать себя мастером а драйвер сам найдёт её потом

Google

Nick
20.06.2018
17:02:54
произведите реконфиг убрав лишние реплики и она станет мастером

M
20.06.2018
17:03:03

Nick
20.06.2018
17:03:21
эм
как вы настраиваете репликасет?
сколько реплик в репликасете?

M
20.06.2018
17:03:59

Nick
20.06.2018
17:04:19
тогда как вы 90% положили?

M
20.06.2018
17:07:40

Nick
20.06.2018
17:08:08
т.е. вы погасили 2 ноды из трех

M
20.06.2018
17:09:40
да, я ожидал что вообще всё прозрачно пройдёт, или с минимальными потерями.

Nick
20.06.2018
17:11:43
N нод в реплика сете позволяют пережить падение (N-1)/2 нод
никакой магии

yopp
20.06.2018
17:43:49

?
20.06.2018
19:53:39

Сергей
21.06.2018
08:02:02
Привет всем)
Есть вопрос, может кто-то сможет подсказать)
Использую mongoose, хочу решить задачу.
Есть коллекция posts.
У каждого поста есть поле comments.
А сами комментарии лежат в отдельной коллекции comments.
Как сделать так, чтобы при запросе post, в него сразу подтягивались комментарии?
Виртуальным полем не получается, потому что его нельзя сделать асинхронным.
Какие еще есть варианты?

Artur
21.06.2018
08:13:59

Сергей
21.06.2018
08:14:54
Я забыл написать про то, что я не хочу это в каждом контроллере писать) Хочу описать один раз в модели, чтобы оно постоянно подтягивалось, как внутреннее поле

Google

M
21.06.2018
08:59:24
ребят подскажите а есть ли какой то интсрумент чтобы сделать версионость документа
чтобы можно было откатиться назад
или на какую то версию

yopp
21.06.2018
09:21:43
Что-то с именованием фильтра. Проверьте что там все буквы латинские.

Stivn
21.06.2018
10:54:27
запустил express+mongodb через pm2 и теперь постоянно перезапускает сервер:
Change detected on path db/diagnostic.data/metrics.interim for app app - restarting
PM2 | Stopping app:app id:0
PM2 | App [app] with id [0] and pid [11760], exited with code [0] via signal [SIGINT]
PM2 | pid=11760 msg=process killed
PM2 | Starting execution sequence in -fork mode- for app name:app id:0
PM2 | App name:app id:0 online
что за файл? как можно остановить рестарт?
не смог ничего найти по этому файлу metrics.interim

Сергей
21.06.2018
12:01:56

Stivn
21.06.2018
12:19:27
Да

Artem
21.06.2018
12:21:58
что за файл? как можно остановить рестарт?
насколько я помню это папка diagnostic.data куда пишется диагностическая информация конкретного инстанса. можно отключить сбор диагностики, стартовав mongod с параметром setParameter:
diagnosticDataCollectionEnabled: false
а вы не могли бы привести версию MongoDB, и какой движок используете?

p
22.06.2018
08:37:54
всем привет!
В коллекции у каждого документа есть массив объектов с еще одним массивом. Нужно все элементы последнего массива обновить - взять два поля и вычислить третье. Как это лучше сделать?

keystr0ke
22.06.2018
09:25:28

p
22.06.2018
10:16:07

Александр
23.06.2018
17:34:57
ребят, что-то не въезжаю, мне нужно из вложеного массива сделать выборку элементов, которые были добавлены за последние 24 часа (поле time есть), как мне это сделать?
проблема в том что он мне выдает все вложенные документы, если есть записи за последние 24 часа, а мне нужны только документы за 24 часа