Anonymous
супер, пасябки
Ilia
Гайс! А кто-то платным софтом монго бэкапит? расскажите пожалуйста подробнее про процесс, результаты
Roman
Почему выдает ошибку?
const patients = await this.patientModel.find({ }).project({ "dateOfDeactivation": 1 }).exec();
Roman
TypeError: this.patientModel.find(...).project is not a function
yopp
Roman
CastError: Cast to ObjectId failed for value "{ dateOfDeactivation:
{ '$exists': true } }" at path "user" for model "Patient"
Roman
const patients = await this.patientModel.find({"user": {"dateOfDeactivation": {$exists: true}}}).exec(); вот запрос что не так?
Daniil
yopp
yopp
но это не очень удачное решение
Ilia
Co.In
но это не очень удачное решение
Я это понимаю, коль оно так сходу не заводиться)
Какие есть варианты? Как понимаю таким образом боролись с уникальностью данных и перезаписи по ключу
yopp
Изменить схему на что-то в духе:
"limit": [
{
"key": "custom:key:c",
"role": "user",
"user_id": "user:3"
}
…
]
Уникальность обеспечивать уникальным индексом
yopp
yopp
И проверьте что у вас в конфигурации нет настройки cluster level аутентификации
Valdis
была проблема что надо было создать ключ и пробросить на все ноды через keyFile
yopp
Ага, значит вы включили обе системы аутентификации: и пользовательскую и для кластера
yopp
4.2.6 (Apr 21) ◦ 4.0.18 (Apr 15) ◦ 4.4.0-rc5 (May 9)
• Плейграунд для запросов
• Документация
• Официальные курсы (Бесплатно)
Stable: 4.2.6 ◦ Bugfix: 4.0.18
Legacy: 3.6.18 (May 1) ◦ Beta: 4.4.0-rc5
По вопросам платной поддержки и покупки лицензий пишите @dd_bb
☠️: 3.4.23 (Jan ‘20), 3.2.21 (Dec ’18), 3.0.15 (May ’17)
Co.In
https://play.db-ai.co/m/Xr081H7kZQABtCMg
А тут у вас два условия в $match и в cond, это для оптимизации?
https://mongoplayground.net/p/f5OH6laHswT
Такое выглядит более понятно, хотя предположу что оно преобразует всю таблицу и потом по трубе передаст в match
Roman
почему когда я делаю запрос такой
> db.patients.find({ }, {_id: 1, 'user.updatedAt': 1}).count()
или такой
> db.patients.find({ }, {_id: 1, 'user.email': 1}).count()
мне приходит один и тотже резулбтат если в бд они разные
yopp
Эти два запроса возвращают одинаковый набор документов, в данном случае все, такак фильтр пустой ({}). Вторым аргументом указывается проекция, т.е. список полей которые будут возвращаены в резульате и не влияет количество возвращённых в результате выборки документов
Roman
yopp
Null
Mongo World в 2020 году будет проходить 9 и 10 июня в онлайн формате под названием «Mongo.LIVE», а участие абсолютно бесплатное. Регистрация: https://www.mongodb.com/world
Апрельские обновления:
* Stable: 4.2.6 (Apr 21)
* Bugfix: 4.0.18 (Apr 15)
* Beta: 4.4.0-rc5 (May 9)
Вероятно релиз версии 4.4.0 анонсируют на Mongo.LIVE, так что ждать осталось совсем недолго
yopp
yopp
да, оно преобразует все документы и выборка будет не эффективной
Bogdan
Суть: в коллекции 8.8 млн записей, 5 ГБ. В каждой записи по 15 полей, нужно производить поиск по 6 из них (по одному, по нескольким или по всем). Сервер - DigitalOcean $5 Droplet.
Создавал индексы по 6 полям отдельно, соответственно по одному любому полю поиск 80-140мс. Мульти-индекс работает, но только с опцией sparse и только с определенным кол-вом полей (от 3 до 6). Создать десятки индексов на все случаи жизни считаю костылём, надеюсь - это не не офф решение монго.
Вопрос: как сделать правильный индекс, чтобы можно было фильтровать 9 млн записей за 80-140 мс при любой выборке, будь то 1 поле или сразу 6?
Denis
Привет, хочу про архитектуру спросить. Делаю мобильное приложение знакомства, сделал с firebase базу там абонентов, но с очень урезаными возможностями делать выборки, приходиться много лишних действий делать, даже onSnapshot не помогает когда данных много. Есть колекция юзеров и есть коллекция кто кого лайкнул, чтобы повторно не предлогать лайкать. Перехожу на GraphQL, там чище выборки и подписки есть. Теперь думаю про бд, остановился на монго. Но чет не знаю как лучше архитектуру. Мож есть идеи как правильно хранить?
Nick
yopp
Суть: в коллекции 8.8 млн записей, 5 ГБ. В каждой записи по 15 полей, нужно производить поиск по 6 из них (по одному, по нескольким или по всем). Сервер - DigitalOcean $5 Droplet.
Создавал индексы по 6 полям отдельно, соответственно по одному любому полю поиск 80-140мс. Мульти-индекс работает, но только с опцией sparse и только с определенным кол-вом полей (от 3 до 6). Создать десятки индексов на все случаи жизни считаю костылём, надеюсь - это не не офф решение монго.
Вопрос: как сделать правильный индекс, чтобы можно было фильтровать 9 млн записей за 80-140 мс при любой выборке, будь то 1 поле или сразу 6?
Возможно подойдёт wildcard index, но в остальном, задача индекса — уменьшить объём данных для поиска. Если вы ищите по всему документу, то возможно либо у вас не эффективная схема, либо вам нужен другой инструмент
yopp
если это случай dynamic attribute, то вероятно схема
attributes: [{ key: <string>, value: <string> }, … {}]и составной индекс по attrs.key. attrs.value будет эффективнее
Denis
Коллекция users и коллекцию likes, где храниться ид кто лайкнул и ид кого лайкнули. Мне нужно выбирать для конкретного юзера кого он еще не лайкал. В монго я новичек, может с учетом специфики я изначально архитектуру не правильно делаю. А так как юзеров может быть много и лайков еще больше, то делать бы это в одном запросе
Михаил
Denis
yopp
Почему монга, а не графовая бд ?
Графовая БД не поможет, так как количество связей для анализа всё равно будет в худшем случае равно количеству пользователей
Denis
Почему монга, а не графовая бд ?
Да тут проект больше расчитан на изучение всех используемых технологий. А с монгой сталкивался ну и подумал что неплохо подучить и научиться работать. Плюс изначально проект на firebase был, а это похожее хранение
Denis
Если лучше чтот другое использовать, подскажите что лучше будет
Denis
Думал в монге в юзерах хранить массив кого он лайкнул, но он может и тыщи юзеров лайкать, в итоге тяжелые коллекции будут. Или я не прав?
yopp
yopp
Ваша задача алгоритмически сложная, она одинаково плохо будет решаться в любом хранилище
Михаил
Был опыт создания простенькой соц.сети на mysql, столкнулись с кучей джоинов, монга проблему бы не особо решила. Поэтому, если проект больше академический , то в учитывая прошлый опыт, я бы сейчас попробовал графовую бд.
Михаил
Denis
Просто само приложение это не новинка совсем, популярный кейс, хранить лайки и фильтровать, решения кажется уже должны быть
yopp
Михаил
Окей, извиняюсь
yopp
Make it work, make it right, make it fast
Denis
Спасибо, поищу про bucket
Melodeiro
У меня в бд хранятся даты в строке, в формате: "Wed, 13 May 2020 20:45:56 UTC". При этом операции gte, sort и т п на них вроде как корректно работают. Так и должно быть? По какому принципу это вообще работает?
Melodeiro
Или нужно все-таки делать преобразования какие-то?
Anonymous
Господа, а что лучше: mapreduce или агрегации?
yopp
Агрегации
yopp
Anonymous
Вот я тоже написал ёба агрегации, подумал как это на мапредьюс переписать и не придумал. Вообще наверное лучше развернуть Atlas...
Roman
А как сделать populate из терминала? Чтобы обьелинить таблицы
Roman
В монге я имею введу
Askhat
Но ты скорее всего убьешься чем будешь делать это в терминале. Заюзай Mongo Compass. Там есть тулза для аггрегации
Roman
Askhat
Какая тулза?
https://docs.mongodb.com/compass/master/aggregation-pipeline-builder/
Roman
Denis
а оператор $ne и с массивами работает? "likes": { "$ne": ObjectId(req.body.userId) } тоесть тут перебор всего массива будет?
Roman
_id:5d5fba2879571
firstName:"Первый"
lastName:"Пациент"
dateOfBirth:2019-08
gender:"male"
dateOfRegistration:2019-08-23
hospital:5d5fbf7487956d
user:5d5fba879570
patientStatus:"active"
patientDiagnosis:5d190edd480
email: 123@gmail.com
"pacic@mail.com"__v:0
nickname:"Первый Пациент"
firstTimeAddGame:true
achievement:
5d83b5f4b
address:"asd"
height:1
weight:1
_id:5d039c0d7c3475b
password:"$2a$10FZC/fZ9l4wONuhMgXdkC"
email:"123@mail.com"
rolе: admin
lang:"en"
identifier:"6tPYcwd6dO"
lastLoginDate
updatedAt
2020-05-06
@bilyalov
Как мне обьединить эти две таблицы?
Евгений
В mongoose я могу как-нибудь инфу передать из pre хука в post? для update
Алексей
всем привет
Алексей
запустил индекс для поля в монге, а можно как-то смотреть процесс выполнения ?
Bogdan
kk
С логах тоже будут записи с процентами завершения
Arams
добрый вечер. подскажите, пожалуйста. есть два документа в документе Х хранятся (id, name etc ) в документе Х2 хранятся другие поля и поле id из Х. вопрос: как отдать с сервера документ Х2 в котором id будет равен полю name из документа Х?
Anonymous
У меня есть документы в коллекции с разными полями, включая массивы и численные поля, как бы мне правильно искать в этом всём? Просто в $match агрегаций впихивать регекспы, для полей массивов юзать $elemMatch? Насколько быстро вообще такой поиск будет работать, база на 500 мегабайт
Bogdan
Anonymous
Anonymous
Парни, а вот есть у меня документ с полем
`names: ["name1", "name2", "name3"] и нужно найти его имея ["name1", "name3"], при этом если искать ["name1", "name3", "nameXXX"] то этот документ чтобы не находило. То-есть поиск по подмножеству
Anonymous
Как таке сделать?