@MongoDBRussian

Страница 211 из 342
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
Только учтите что в монге нет транзакций и вам дополнительно необходимо озаботиться косистентностью бд при ошибках
Cпасибо, я знал в монге промиднлапры но думал , что каскад тоже есть или , что то типа этого :)

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})

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
Помогите пожалуйста
Тебе всё сказали а чате по MySQL

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
а по вопросу ничего не мешает вбить все это в гугл и уверен что первый результат вам поможет

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

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

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

Dmitriy
27.03.2018
06:29:52
Dmitriy ну, этот момент можно опустить. суть вопроса в том что лучше - много маленьких документов или меньшее кол-во больших.
Тут нужно определиться что есть "большой". Это много ключей или много данных в value. В любом случае, если документы не предполагается раздувать и их размер будет фиксированный, то лучше все держать в оной коллекции. Так будет меньше запросов к БД. Ну и, конечно же, индексы нужно повесить грамотно

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 документов на коллекцию. Я вот тоже думаю, что сканирование коллекции, добавление и удаление кажого документа, плюс перестроение индексов...

будет более ресурсоемким процессом

Игорь
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
если вы анализируете бакеты по времени, то складывайте в один документ с упорядычеванием по времени

если по пользователю, то по времени и пользователю

там наверху резонно отметили что документ не будет вмещать в себя строго день, потому что есть ограничение на размер документа

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 с роллбэком. либо все либо ничего так сказать. пример двухфазного комита читал. интересно что у людей на практике с этим

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

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

только две коллекции получается должны быть консистентны

yopp
27.03.2018
16:19:23
Это техническое описание проблемы

У вас денормализованные данные?

Вы обновляете связи?

Какой физический смысл этих операций?

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

Страница 211 из 342