Vladimir
Две коллекции
yopp
https://vegibit.com/mongoose-relationships-tutorial/ вот тут есть пример 1:N отношений
yopp
Referencing A Document in another Document
yopp
вобщем-то значит всё окей
Vladimir
Спасибо почитаю
yopp
но ещё раз: исходите не из того как вы будете их записывать, а как вы будете эти документы использовать
Ivan
добрый вечер. посоветуйте по такому кейсу надо искать по одному полю (a), либо комбинации этого поля и еще одного (a, b) - и в обоих случаях сортировать по третьему полю (c) для этого сейчас есть два индекса: - по полям a,b,c - по полям a,c родилась такая мысль, переделать поле b на массив из двух элементов, который будет всегда содержать значение b + одинаковую константу. Тогда искать можно будет либо по (a, b), либо по (a, b=константа) насколько мысль тупая или стоит попробовать?
Vladimir
> но ещё раз: исходите не из того как вы будете их записывать, а как вы будете эти документы использовать да, спасибо за рекомендации
Ivan
размера индексов - предполагаю, что один такой индекс будет меньше весить, чем два текущих вместе
yopp
а почему вас беспокоит размер индексов?
yopp
нет, попробовать можно. но надо учитывать что два элемента массива будут соотвествовать двум ключа в индексе
Nick
а проблема то в чем? памяти не хватает7
Ivan
https://docs.mongodb.com/manual/tutorial/ensure-indexes-fit-ram/
yopp
у вас какие-то реальные проблемы?
Ivan
нет
yopp
тогда ничего не делайте :)
Nick
)))
Nick
повезло
yopp
игра свеч не стоит
yopp
эффект будет зависеть от эффективности prefix compression
yopp
по той простой причине что на каждый элемент массива создаётся по записе в индексе. т.е. сделав из поля масив с двумя элементами вы увеличите количество ключей в индексе в два раза
yopp
и я не уверен в том, что в памяти страницы будут хранится с prefix compression
yopp
т.е. есть высокая доля вероятности что всё что вы выйграете это немного места на диске
yopp
и вероятно ценой более медленного поиска
Serhii
Добрый день, можно ли указать реф на несколько схем для ключа внутри схемы?
Nick
можно пока поиграться с minkey/maxkey но сейчас чет на багу у них в жире наткнулся, так что на свой страх и риск поиграться https://jira.mongodb.org/browse/SERVER-35921
Serhii
Nick
это немного нереально
Serhii
это немного нереально
понял, ну и хорошо
Nick
он имел ввиду, что хочет в схеме в монгусе содать поле, которым сможет ссылаться на разные классы объектов, каждый из которых должен был бы описываться своей схемой. эдакое извращение, когда хочется похожие или просто взаимоисключащие объекты сохранить в поле. json для этого прям идеален, а вот когда накидываешь всякие схемы, то начинается веселуха))
yopp
Полиморфные ассоциации чтоли?
Nick
насколько они полиморфны чувак не указал)
Nick
в общем случае это дичь
yopp
Не, в мысле поле со ссылкой на разные классы — это полиморфная ассоциация?
yopp
Ну например адрес может быть привязана к Персоне или к Компании?
yopp
И в адресе хранятся и класс связанного объекта и его указатель?
Nick
думаю хуже, чел наверняка хотел чтобы оно само там какнить
Nick
вообще проще его мучить, из меня телепат конечно не самый херовый, но все же
yopp
Ничонепонял и проникся к тебе ещё большим увожением!
Nick
думаю хуже, чел наверняка хотел чтобы оно само там какнить
да фраза достойная получилась, перечитал оценил)))
Nick
И в адресе хранятся и класс связанного объекта и его указатель?
имелл ввиду, что даже этого врядли бы он хранил
yopp
Но смысл хотелки к полиморфизме?
yopp
Я ваш монгус никак не могу вкурить. Надеюсь монговцы запилят какой-то свой ODM, а это отомрет. АПИ у него просто пипец
Nick
я вот не пользуюсь им и не особо и хочется)) эт так одно время побаловался суть понял и все
Hellomik
хай кто здесь пишет на Vue ?
Yurii
хай кто здесь пишет на Vue ?
кажется, немного не той тематики чат) @vuejs_ru
Nick
$max
Nick
а
Nick
у вас для 2 сумма это суммы по 1+2? для 3 1+2+3 ?
Nick
данных много? операция разовая?
Nick
аналитика какаято
Nick
я бы посоветовал приступать
Nick
а так вам нужно декартово произведение на себя, группировка, в которой с фильтрацией собирается сумма
Nick
в принципе AF match lookup unwind group
Nick
aggregation framework
Nick
вам нужно получить num1: 1, num2: 1, val1 10, val2 10 num1: 1, num2: 2, val1 10, val2 20 num1: 1, num2: 3, val1 10, val2 30 num1: 2, num2: 1, val1 20, val2 10 num1: 2, num2: 2, val1 20, val2 20 num1: 2, num2: 3, val1 20, val2 30 num1: 3, num2: 1, val1 30, val2 10 num1: 3, num2: 2, val1 30, val2 20 num1: 3, num2: 3, val1 30, val2 30 потом фильтрацией (или это прямо в лукапе наверн можно сделать) num1<=num2 поулчить num1: 1, num2: 1, val1 10, val2 10 num1: 2, num2: 1, val1 20, val2 10 num1: 2, num2: 2, val1 20, val2 20 num1: 3, num2: 1, val1 30, val2 10 num1: 3, num2: 2, val1 30, val2 20 num1: 3, num2: 3, val1 30, val2 30 где уже группировкой по num1 как id и суммированием val2 поулчить ваши num1: 1, val2 10 num1: 2, val2 30 num1: 3, val2 60
V
Вебинары смотрели?
а подскажешь эти курсы на монго есть возможность может пройти предудущие а неждать ? а то вот 101 и так далее через неделю только
Миша
Привет. Есть массив юзеров. Некоторые уже есть в базе, некоторые нет. Как наименее болезненно обновить существующие и добавить несуществующие в базу?
yopp
Суммировать при записи
yopp
Привет. Есть массив юзеров. Некоторые уже есть в базе, некоторые нет. Как наименее болезненно обновить существующие и добавить несуществующие в базу?
Сделать индекс, по уникальному идентификатору и потом https://docs.mongodb.com/manual/reference/method/db.collection.findAndModify/ с upsert
yopp
https://docs.mongodb.com/manual/reference/method/Bulk/
Этот инструмент никак не решает поставленную задачу. Bulk это механизм мультиплексирования запросов и ничего больше. Он эффективен только в пограничном числе случаев.
Миша
или я что-то не так понял
yopp
не подходит, так как значения обновляемых полей разные
Как вы будете определять что пользователь уже существует?
Миша
id
yopp
Он является общим уникальным идентификаторам в обоих множествах?
Миша
да
yopp
По нему и индекс, если вы не храните это в _id и по нему-же условие для upsert
yopp
Нет
yopp
Bulk нужен в случаях когда вы в сеть уперлись
Миша
я что-то все равно не понимаю, как мне разрешить вот такой случай с findAndModify пришло — [{ id: 1, name: 'robert' }, { id: 3, name: 'aria' }] есть — [{ id: 1, name: 'rob' }, { id: 2, name: 'john' }] надо — [{ id: 1, name: 'robert' }, { id: 2, name: 'john' }, { id: 3, name: 'aria' }]