
Nikita
24.03.2018
13:29:40
Всем привет!
Подскажите, в Mongoose можно же обновлять документ в post('save') ?

Igor
24.03.2018
14:57:13
Есть какая нибудь возможность синхронизировать большой файл с бд не перезаписывая каждый раз этот файл в бд? А только изменения и если они есть

Dmitriy
24.03.2018
23:18:57
Все привет, подскажите а как сделать каскадное удаление в Mongo. Тоесть я удаляю документ из коллекции и хочу, чтобы в другой коллекции удалился его ID из массива который я там храню???

Dim
24.03.2018
23:47:23
Руками

Google

Dim
24.03.2018
23:47:59
Ну в смысле монга она не для этого, видимо вы пришли из мира рсубд

Dmitriy
24.03.2018
23:48:36
тоесть по сути через миделвары
.pre(‘remove’)

SilencerWeb
25.03.2018
02:29:02
хочу дропнуть бд с помощью терминала, нашел такой вариант: mongo <dbname> --eval "db.dropDatabase()”, но как мне узнать как называется моя бд чтобы заменить dbname?))
подключаюсь я так: mongodb://127.0.0.1:27017

Alexander
25.03.2018
02:40:12
проверь shutdown -r now ;)

Nick
25.03.2018
09:43:25

Dmitriy
25.03.2018
09:53:43

Artem
25.03.2018
12:11:26

worsvch
26.03.2018
07:54:22
Всем привет, подскажите как выбрать значения по указанному ключу, чтобы не полностью строки выходили а только значения указанного ключа

Nick
26.03.2018
08:06:32
Юсмотрите доки к find, там параметр указывается

Artem
26.03.2018
08:27:20
db.collection.find({“name”:”пупкин»}{«name”:1})

Dmitriy
26.03.2018
08:42:12

Google

worsvch
26.03.2018
08:44:14
Artem там где name может быть все что угодно, каждое перечислять это нереально

Artem
26.03.2018
08:46:15
Не перечисляйте
db.collection.find({},{“name”:1})

worsvch
26.03.2018
08:59:23
Спасибо, это действительно то

Lipe
26.03.2018
15:51:04
Помогите пожалуйста

Yurii
26.03.2018
15:52:00

Nick
26.03.2018
15:52:05
mysql?

Mikhail
26.03.2018
15:52:06

Lipe
26.03.2018
15:53:04
В чем проблема?

Nick
26.03.2018
15:53:59
гуглить и решать

Lipe
26.03.2018
15:54:19
Зачем группа тогда?

Nick
26.03.2018
15:54:48
это группа по mongodb для начала

Lipe
26.03.2018
15:55:05

Nick
26.03.2018
15:55:47
а по вопросу ничего не мешает вбить все это в гугл и уверен что первый результат вам поможет

Lipe
26.03.2018
15:56:20

Nick
26.03.2018
15:57:46
тогда хорошо бы сразу указывать, что проделал вот то и то не помогло, а то все советы быдут равносильны первой ссылке

Evgeniy
27.03.2018
02:44:53
Подскажите, какой вариант лучше использовать с точки зрения оптимизации монго, много мелких документов или в 20 раз меньшее кол-во больших документов?
Еесть условно твиты, их около 100к, изначально они разбиты по дням. Поиск сконцентрирован в первую очередь по этим твитам. (подсчет различных полей, аналитика, агрегация и.т.п.)
1) Хранить документы Day(ид, дата) с вложенными туда твитами (ид, дата, твит)
2) Хранить документы Twit (ид, дата, твит, ид дня, дата дня)

Google

Dmitriy
27.03.2018
06:23:00
Подскажите, какой вариант лучше использовать с точки зрения оптимизации монго, много мелких документов или в 20 раз меньшее кол-во больших документов?
Еесть условно твиты, их около 100к, изначально они разбиты по дням. Поиск сконцентрирован в первую очередь по этим твитам. (подсчет различных полей, аналитика, агрегация и.т.п.)
1) Хранить документы Day(ид, дата) с вложенными туда твитами (ид, дата, твит)
2) Хранить документы Twit (ид, дата, твит, ид дня, дата дня)
зачем тебе id дня???

Evgeniy
27.03.2018
06:26:22
Dmitriy ну, этот момент можно опустить. суть вопроса в том что лучше - много маленьких документов или меньшее кол-во больших.

Dmitriy
27.03.2018
06:29:52

Evgeniy
27.03.2018
06:32:26
они все в одной коллекции будут, я просто могу там хранить либо твиты, либо дни с вложенными твитами за этот день.

Artem
27.03.2018
06:40:01
Вы учтите тот факт, что монга в любом случае при работе читает документ целиком

Dmitriy
27.03.2018
06:46:36

Evgeniy
27.03.2018
07:17:45
спасибо большое за помощь!

Игорь
27.03.2018
08:19:47
такой вопрос. Есть объем информации, который приходит единым блоком. В среднем по1 500 000 документов. Мне нужно просматривать предыдущею хранящуюся в базе версию и вностить изменения в соответвии с новым пришедшим блоком. Чего нет, удалить, что есть добавить. В коллекции есть четыре индекса, один из них полнотекстовый.
Я правильно понимаю, что быстрее будет просто новый блок добавить, как новую коллецию и заново пересоздать индесы, а старый удалить?
Или все таки быстрее будето частичное обновление? Процесс происходит в среднем раз в час.

Artem
27.03.2018
08:24:20
мне кажется проще пересоздать коллекцию
500000 - не такая уж большая цифра

Игорь
27.03.2018
08:27:42
там варьируеться число. От 500 000 до 3 500 000 документов на коллекцию. Я вот тоже думаю, что сканирование коллекции, добавление и удаление кажого документа, плюс перестроение индексов...
будет более ресурсоемким процессом

Dmitriy
27.03.2018
08:47:25

Игорь
27.03.2018
08:48:29
ну по сути то, что пришло и есть мои актуальные данные. Задача в том, как их быстрее добавить в базе
целиком все за раз и старые удалить

Nick
27.03.2018
08:48:57
Для начала опредить допустим ли простой на время пока старые данные удалены, а новые не подключены

Игорь
27.03.2018
08:50:16
ну я думал, можно сделать так. Сначала добавить новую коллекцию, если все ок, то старую удалать и новую переименовать в старую

Ivan
27.03.2018
08:50:44
не забывай что транзакций нету, лучше писать все эти данные в какую то очередь, а после ее разбирать балками, по 50к документов, например, и делать bulk upsert
главное не по одному документу записывай

Игорь
27.03.2018
08:55:05
ну собственно по этому тоже думаю, что пересоздавать коллекцию надежней. Если бы мне приходили только данные, которые нужно изменить в старой коллекции, то другое дело. А вот тут приходит все. И старое и новое, и что удалить можно понять только сравним данные из старого по наличию в новом

Google

Nick
27.03.2018
09:04:01


Игорь
27.03.2018
09:09:33
ну это уже не столь кретичные факт для меня в данной ситуации. То есть дальнейшие действия не являються критически динамическими. Скрипт, который эти данные пришет в базу их потом и обрабатывает. По этому он в любом случае дождется ответа.
со стороны юзера есть только поиск. Я думаю, что если и случиться такое, что запрос данных будет в момент обновления, в полне нормальным поведение будет написать: "Данные обновляються, повторите запрос позднее" Тем паче, что это не должно занимать много времени. Собственно юзер в моем конкретном случае должен понимать, что данные очень динамически меняются для работы и может потребоваться некоторое ожидание в работе при обновлении.
то есть я не могу ему отдать не доконца обновленные данные

Nick
27.03.2018
09:10:34
вот вы и ответили на вопрос, тогда просто пересоздаете коллекцию

Игорь
27.03.2018
09:10:41
спасибо
хотел посоветоваться
а то малоли, я еще далеко не спец в монго)))

Nick
27.03.2018
09:12:14
в общем случае дело не в монго, а в подходе, а подход зависит от требований и дальше уже сверху опредляется, какого рода костыли подбивать при работе с конкретной бд

yopp
27.03.2018
11:52:36
Подскажите, какой вариант лучше использовать с точки зрения оптимизации монго, много мелких документов или в 20 раз меньшее кол-во больших документов?
Еесть условно твиты, их около 100к, изначально они разбиты по дням. Поиск сконцентрирован в первую очередь по этим твитам. (подсчет различных полей, аналитика, агрегация и.т.п.)
1) Хранить документы Day(ид, дата) с вложенными туда твитами (ид, дата, твит)
2) Хранить документы Twit (ид, дата, твит, ид дня, дата дня)
хранить так, как они потом анализируются
если вы анализируете бакеты по времени, то складывайте в один документ с упорядычеванием по времени
если по пользователю, то по времени и пользователю
там наверху резонно отметили что документ не будет вмещать в себя строго день, потому что есть ограничение на размер документа

Evgeniy
27.03.2018
11:54:43

yopp
27.03.2018
11:54:56
большое количество мелких документов, когда много индексов — очень плохо
больше == миллиарды
так как у вас соотношение размеров документа и всех индексов будет в пользу индексов, а это почти всегда неэффективно
https://docs.mongodb.com/ecosystem/use-cases/storing-comments/

Dmitry
27.03.2018
15:40:05
Товарищи кто какие практики/патерны/подходы/npm модули использует чобы гарантировать выполнение нескольких операций create/update с роллбэком. либо все либо ничего так сказать. пример двухфазного комита читал. интересно что у людей на практике с этим

Dmitriy
27.03.2018
16:05:04

Dmitry
27.03.2018
16:09:22
Ну мне прям совсем ACID не нужен. И я да. мотрел там их анонс. Что то там в примерах нет NodeJS и помоему неспроста это

Google

Dmitry
27.03.2018
16:09:48
https://stackoverflow.com/questions/23830385/how-do-acid-transactions-with-nodejs-tokumx-mongodb-any-mongodb-driver-for
Я так подозреваю что все пилят собственный велик на jobs/queue
хотя вот нашел такую оберточку еще https://github.com/e-oj/Fawn

yopp
27.03.2018
16:11:27
Но если вы хотите дельного совета, расскажите о вашей бизнес-задаче. Может быть есть другой способ получить желаемый результат

Dmitry
27.03.2018
16:17:32
Ну у меня есть документ который будет гарантированно создан или изменен. но иногда мне нужно вместе с этим создавать / менять документ в другой коллекции
только две коллекции получается должны быть консистентны

yopp
27.03.2018
16:19:23
Это техническое описание проблемы
У вас денормализованные данные?
Вы обновляете связи?
Какой физический смысл этих операций?

Dmitry
27.03.2018
16:21:22
немного денормализованные. данные. да. связи не обновляются после создания. рефы создаются при создании и остаются как есть