@MongoDBRussian

Страница 336 из 342
Andrey
19.10.2018
14:42:54
А чем монго4 принципиально лучше монго3?

yopp
19.10.2018
14:43:56
тем что она уже есть. смысла на 3 переходить уже нет

Stable: 4.0.3 (Oct 9, 2018) Bugfix: 3.6.8 (Sep 19, 2018), Legacy: 3.4.17 (Sep 7, 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.3: https://docs.mongodb.com/manual/release-notes/4.0/#oct-9-2018 3.6.8: https://docs.mongodb.com/manual/release-notes/3.6/#sep-19-2018 3.4.17: https://docs.mongodb.com/manual/release-notes/3.4/#sep-7-2018 End of life: 3.4 (EOL: June 2019), 3.2.21 (REL: Sep 2018 / EOL: Sep 2018), 3.0.15 (REL: May 2015 / EOL: Feb 2018)

В следующем году прощаемся с 3.4

Google
Alexander
19.10.2018
14:47:43
ееее

Aga
19.10.2018
16:26:37
Эх)

AstraSerg
19.10.2018
16:33:21
немного проще сделал db.coll.find({ $where : "this._id.toString() != this.field2.toString()" } );
Это отличное и, имхо, единственное решение

и как понять какой тип индекса когда нужно юзать?
Монга сама выберет самый подходящий индекс. Вам там гадать нечего. Разве что захотите указать индекс явно через hint. Ну и сделайте индексы под свои задачи

yopp
19.10.2018
16:42:25
https://docs.mongodb.com/manual/core/index-intersection/

Maxim
19.10.2018
17:31:09
нет, не правильно
спасибо за ссылку - обычно везде говорят что она под капотом один индекс юзает

@dd_bb подскажите пожалуйста насколько адекватный подход: на каждую обёемную агрегацию (джойны, проджекты и прочее ) делать отдельную вьшку в базе и дальше уже работать с ней. Как ведут вообще себя индексы в агригейшен фремворке, в частности при лукапе?

yopp
19.10.2018
17:33:35
главное чтоб вы улыбались

Maxim
19.10.2018
17:33:41
+ нормально ли это для монги делать несколько жирных составных индексов, по которых можно делать кверы не дёргая при этом всю коллекцию, а только индексы?

yopp
19.10.2018
17:33:43
всё остальное проверятется в бою

если данные уже есть, то берём и на тестовом столе проверяем все свои гипотезы

Google
yopp
19.10.2018
17:34:24
если данных нет, то пишием скрипт который нагрегерирует несколько гигабайт данных и проверяем на них

мне кажется что views это плохая идея

yopp
19.10.2018
17:34:47
лукапы в продакшене тоже

но я старовер

Maxim
19.10.2018
17:36:02
как правильно?

если мне нужно делать фильры и сортировку по двух коллекция сразу?

yopp
19.10.2018
17:37:32
нет «правильно», есть «эффективно»

сортировка по двум коллекциям это всё

Maxim
19.10.2018
17:38:03
о, а какой путь верный?

yopp
19.10.2018
17:38:15
нет верных путей :)

Maxim
19.10.2018
17:38:26
вообще - глде можно почитать про бест практис в монге? про индексы/агрегации/выборки?

yopp
19.10.2018
17:38:33
если у вас коллекции по 100 мегабайт, делайте как быстрее

Maxim
19.10.2018
17:38:47
yopp
19.10.2018
17:38:51
если у вас десятки/сотни гигабайт, то тут тоже советы бесмысллено давать

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

в целом если есть возможность, то лучше писать данных так, как вы их будете читать

Maxim
19.10.2018
17:41:02
в целом если есть возможность, то лучше писать данных так, как вы их будете читать
в целом понял, спасибо. в общем буду тестить/игратся/практиковаться)

AstraSerg
19.10.2018
18:09:08
https://docs.mongodb.com/manual/core/index-intersection/
Круть. Спасибо, буду знать.

Google
Maxim
19.10.2018
19:34:11
что лучше юзать: mongodb $arrayElemAt или unwind ?

Aleksandr
19.10.2018
20:17:40
от задачи зависит

M
20.10.2018
12:01:26
ребят может подскажет ктото если база забекаплена через —archive —gzip то ее можно востановить в другую (сменить имя) ?

M
20.10.2018
12:03:48
Constantin
20.10.2018
12:04:04
а как делать в таком случае ?
Бэкапить не в --archive

--gzip можно и без --archive применять, если что

M
20.10.2018
13:23:25
Бэкапить не в --archive
да тут дело что mongo в купере вот и использовал archive чтобы можно было легко востановить , а если без archive то большие трудности появляются с востановлением . на локальной машине нет mongorestore команды а вот как через всякие mongodb atlas или robo 3t я не нашел

Denys
20.10.2018
13:27:05
всем привет) подскажите плз, скачал один пример и надо запустить монго и мне надо указать путь через -- dbpath. а как мне сам путь узнать, монго я один раз устанавлил уже

Pavel
21.10.2018
19:13:18
Всем привет, мб кто знает, есть ли ограничение на колл-во памяти(документов) в коллекции в mongoDb? А то для меня прям сегодня открытием стало что в одном документе можно хранить всего лишь 16мб... P.S. В интернете так и не узнал точно есть ли такое ограничение или нет...

Max
21.10.2018
19:14:30
https://docs.mongodb.com/manual/reference/limits/

про кол-во документов лимиты не встречал, но 16 мегабайт на документ - да, это есть такое.

Pavel
21.10.2018
19:16:17
Ну вот я тоже не нашел не чего, а то просто мне нужно будет в коллекции очень, очень много хранить документов и я хз можно ли так организовать, ну скорее всего можно

Dmitriy
21.10.2018
19:17:24
ребят, подскажите, пожалуйста, как лучше организовать поиск по всем полям вложенного объекта? Т.е. например есть документ { param: "value", name: { en: "...", ru: "...", de: "..." } } как лучше сделать поиск по полям объекта name? Понятно, что можно через or, но может есть варианты лучше?

yopp
21.10.2018
19:17:31
на размер коллекции нет ограничений

yopp
21.10.2018
19:21:01
есть ограничение на длинну индексируемого поля в 1024 байт или 8192 бит, так что максимальное количество документов которое можно вставить в коллекцию это что-то в духе 2^8192 или 10^2466 степени. Атомов во вселенной где-то 10^80

Google
yopp
21.10.2018
19:22:56
нет, нельзя

Pavel
21.10.2018
19:30:52
а что вы храните?
Нужно будет хранить кучу сообщений, и так как в один документ все не влезет буду раскидывать все по так называемым ссылкам

Pavel
21.10.2018
19:31:28
В одной коллекции будут хранится ссылки на объекты сообщений а в других сами сообщения

ну вроде на первый взгляд почти тоже самое что я и хочу сделать, но попозже все равно поподробнее почитаю

А хотя такая архитектура даже по лучше, спасибо)

Alex
22.10.2018
10:25:38
Приветы. Парни, а кто подскажет, что не так. Дело происходит в aggregation фреймворке. На некоторой стадии пайплайна у меня пачка объектов вот такого вида: { _id: ObjectId(...), items: [ { externalId: ObjectId(...), ... } ] } Теперь я хочу в каждом объекте отфильтровать items так, чтобы в этом массиве остались только объекты, у которых externalId === _id. Добавляю в пайплайн такой вот стейдж: { $project: { _id: 1, items: { $filter: { input: '$items', cond: { $eq: ['$$this.externalId', '$_id'] } } } } } И на выходе стабильно получаю объекты с пустым массивом на месте items. На SO по теме нашёл только такого же страдальца без ответов: https://stackoverflow.com/questions/43043927/how-to-filter-mongodb-aggregate-based-on-root-id Есть мысли что я делаю не так?

yopp
22.10.2018
10:36:48
db.foo.insert({ "_id" : "4", "ref" : "3", "items" : [ { "eid" : "1" }, { "eid" : "1" }, { "eid" : "1" }, { "eid" : "2" }, { "eid" : "3" }, { "eid" : "4" } ] }) db.foo.aggregate([ { $project: { items: { $filter: { input: "$items", cond: { $eq: [ "$$this.eid", "$_id" ] } } } } } ]) { "_id" : "4", "items" : [ { "eid" : "4" } ] }

Alex
22.10.2018
10:39:43
Хм. Минуту

Таак. Думал проблема с тем, что у тебя строки, а у меня ObjectId, но нет.. Ладно, пошёл думать, где в пайплайне ошибка. Спасибо

yopp
22.10.2018
10:45:24
94% что в $_id не оригинальный _id

например если раньше group есть

ну или опечатка в имени поля :)

Alex
22.10.2018
10:56:40
Да не, просто данных километры, и я сильно не сразу сообразил, что на самом деле items лежит еще внутри другого массива

yopp
22.10.2018
10:57:19
а, ну или так, да :)

Alex
22.10.2018
10:57:52
Энивей, спасибо ?

Алексей
22.10.2018
14:08:33
Подскажите пож, как к этому добавить поле с тотал суммой $match: { type: 'in', sid: sid.key } Т.е. чтобы было totalSum: сумма от $match: { type: 'in', sid: sid.key } let sidPayments = Transaction.aggregate([ { $match: { type: 'in', sid: sid.key } }, { $group: { _id: '$user', sum : { $sum: "$amount" } } }, { $lookup: { from: "users", localField: "_id", foreignField: "_id", as: "user_info" } } ]);

Google
Алексей
22.10.2018
14:10:29
Или так никак не сделать?

Хотелось бы одним запросом решить это

AstraSerg
22.10.2018
14:26:15
Хотелось бы одним запросом решить это
Добрый вечер. Нужно добавить эти поля в group

с сообтетствующим аккумулятором. Выбирайте какой вам подойдёт: https://docs.mongodb.com/manual/reference/operator/aggregation/#accumulators-group

Алексей
22.10.2018
14:32:08
Но на этой стоке я группирую по пользователям, и подсчитываю сколько один пользователь внёс И также мне нужно знать сколько total sum по sid на всех транзакциях

как отдельный запрос это выглядит так { $match: { type: 'in', sid: sid.key } }, { $group: { _id: '$sid', sum: { $sum: "$amount" } } }

Алексей
22.10.2018
15:27:27
Извиняюсь, но я не понял. Можете объяснить как это получится, если они группируются по _id: '$user' и сумма у них складывается из документов, у которых user один и тот же, а мне нужна сумма из всех юзеров с этим sid Я наверно туплю

Алексей
22.10.2018
15:29:14
Спасибо, жду : )

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