Mike
ясно
Viktar
Вы сейчас работаете с СУБД как с текстовым файлом
Mike
Viktar
Поэтому все время тратится что бы прочитать все данные
Viktar
Использование более быстрых дисков ускорит вашу операцию. Но это путь в никуда
Mike
угу - понял
Viktar
Viktar
Посмотрите в сторону aggregate вместо файнд. И переносите часть логики в него по анализу
Mike
а в качестве базы наверное монгу оставлю
Viktar
))) будет тоже самое.
Mike
))
Mike
но просто раст еще нужен за тем что база не даст такие логические возможности как язык
Mike
тоесть ее все равно не хватит рано или поздно
Mike
скорее рано
Viktar
Вы пытаетесь загрузить тонну кирпичей и от того, что вы грузите их в КамАЗ или Мерседес скорость загрузки не поменяется
Mike
это я понимаю
Mike
я уже речь вел о других ситуациях
Mike
когда документы дергаться будут мелкими партиями и там дальше будет много анализа
Mike
но цепочка дерганий при этом будет бесконечно длинной
Viktar
Вы размажете просто время по мелким партиям. Используйте возможности СУБД для анализа. Их для этого и придумали
AcidMan
камрады! а расскажите, как так может быть. show dbs показывает объём 52Мб, mongodump делает бэкап 38Мб несжатых, а на диске всё провсё занимает 1.1Гб… чяднт?
AcidMan
и как мне сделать нормальный полный бэкап?
Mike
Александр
Посоны, помогите, пожалуйста, чем upsert, insert и update отличаются? Мне нужно валюты по апишке подтягивать и в бд сохранять, старые не затирать и не обновлять, добавлять только новые
Albert
insert для добавления нового документа
Albert
update для изменения документа
Dmitry
Александр
если нету документа update не сработает?
Albert
Albert
если он не найдет документа который соответствует фильтру то не сработает
Александр
Так, ну я правильно понял, что работает так:
insert - добавляет новый документ, если существует такой, то не сработает
update - обновляет новый документ, если документа еще нет, то не сработает
upsert - имплементирует логику двух выше вместе и работает в любом случае
Александр
?
Dmitry
Почти. Insert не вставит новый документ, если есть индекс на уникальность поля
fenogentov
чем всетаки отличается реплейс от апдейт?
Алина
реплейс полностью один документ другим заменяет, плюс в нем можно использовать параметр upsert (найдено - обновлем, не найдено - добавляем)
апдейтом можно поменять часть документа, не затрагивая другие поля, и им никак не добавить новый документ
Viktar
Алина
прикольно)) в краткой документашке про это не написано)
fenogentov
вот поэтому и вопросы
вреде все одинаково, какието нюанся, но в итоге все одинаково
fenogentov
вроде одинаково
Алина
ну все-таки остается отличие, что реплейс заменит док полностью, а апдейт поменяет только нужные поля
Алина
ну или допишет
Алина
ага. я просто обычно такой пользуюсь https://metanit.com/nosql/mongodb/2.9.php для повседневной рутины хватет
Арби
Всем привет!
У меня есть документ user. У каждого юзера есть список контактов. Как я могу сделать так, чтобы поля email и phone в массиве контактов были уникальными?
Арби
вот как выглядят модели в mongoose
Арби
Dmitry
Dmitry
А вообще, ты можешь создать индекс по типу Schema.index({"contacts.email": 1}, {unique: true})
Арби
Арби
а как более правильно хранить контакты в таком случае?
Dmitry
Перенес в другую таблицу и добавил поле, кому это принадлежит, чтобы потом через тот же find найти кому это принадлежит.
Dmitry
Например у человека 4 контакта, вот 4 записи должно быть в таблице
Арби
у меня отдельная таблица "контакты", каждый контакт имеет связь к одному пользователю
Арби
что-то такое?
Dmitry
А в качестве index, то Schema.index({email: 1, profile: 1}, {unique: true})
Dmitry
Арби
спасибо, попробую
Арби
Создал две таблицы (контакты и пользователи). Связал каждый контакт с пользователем через поле author.
Есть маленькая загвоздка. Я бы хотел сделать поля email и phone уникальными для одного пользователя.
Т.е. чтобы у автора с id: 1 были документы с уникальными полями email и phone.
Но автор с id: 2 мог добавить контакт с email такой же как и у id: 1, но повторно с таким email уже не сможет добавить
Арби
Арби
надеюсь, понятно объяснил
Арби
иными словами, мои контакты уникальны для всех пользователей, а я бы хотел, чтобы они были уникальны в пределах одного пользователя
Vladyslav
Dmitry
Vladyslav
вам нужно использовать group
Vladyslav
https://stackoverflow.com/questions/35877145/mongo-distinct-query-with-full-row-object
как пример
Nikita
Привет! Существуют ли какие-нибудь умный тулзы которые мониторят монго коллекцию с целью понять какие индексы избыточны а какие имеет смысл добавить?
lmn
профайлер? или типа кнопка “реши за меня как будет лучше” ?)
🐆
привет.
есть схемы User и Team
у Team есть к примеру тимплид, если я оставлю поля так как на скрине, то мой Юзер которого я запишу в Team.teamLead ничего не будет знать от этом, и наоборот, если я у Юзера сделаю это поле и запишу туда Team к которой он относится, то получая Team я не буду знать какой у неё тимлид.
вопос,
1. как правильно посмотрить схему?
2. может я делаю херню и нужно использовать SQL базу со связями?
Nick
Dmitry
Dmitry
🐆
а как я буду получать инфу что он тимлид?
Dmitry
Ты получаешь пользователя, а потом делаешь запрос к team и вытаскиваешь всё документы, где есть его id
🐆
Dmitry
аааа, вроде понял, спасибо
Это единственный верный вариант т.к. в остальных случаях тебе нужен массив, и тем самым ты быстро словишь ограничение в 16 МБ
pvlmrzv
Добрый день!
Подскажите пожалуйста!
Не могу реализовать нетривиальную сортировку(((
По одному параметру, и нужно что бы:
1. сначала были все записи со значением параметра != А,
2. далее шли все записи == А,
3. и после уже ~isNullOrEmpty
Можно ли вообще это сделать одной выборкой?
Что бы спокойно пагинацию делать.
Спасибо!
Dmitry