Cap
возможно заюзать Capped collection для сообщений, если не нада архивировать очень старую историю
Anonymous
да я фото вообще не храню на сервере, он ссылается на фото с api vk, допустим, в сообщении я укажу поля ссылки на фото, и псевдоним, а он изменит, и как быть?
Cap
фото закешировать у себя, для скорости возможно будет интереснее если будет стоять то фото при котором было написанно сообщение - фича твоего чата !
Cap
А вообще Фото меняется реже чем запрашиваются сообщения - выгоднее обновлять везде фото, чем делать ссылкой
Anonymous
так то да, тем более история чата будет совсем небольшая, и на клиенте реакт будет хранить нужное количество сообщений, и отпинывать лишние
Anonymous
- фича твоего чата ! Это сильно)
Anonymous
думаю заказчику не очень понравиться моя фича
Cap
Короче говоря, если речь про скорость, то по максимуму подготавливаем данные под запросы, чтоб их не приходилось лопатить каждый раз, а берём почти готовые
Anonymous
спасибо
Anonymous
Привет, а можно ли sql таблицу перевести в json и запушить в mongo?
Anonymous
Можно. А зачем?
Anonymous
Можно что угодно перевести в JSON и запушить в MongoDB.
Anonymous
Можно. А зачем?
нужна таблица готовых данных которая есть только в sql формате
Anonymous
Доброго всем. Подскажите пожалуйста, можно ли вытащить с коллекции документы фильтра {type: "type1}, {type: "type2} и для каждого типа ограниченный лимит, допустим каждого типа по 20 документов. Можно ли сделать так в одном запросе? Промиссы? Отдельные роуты для каждого типа?
Igor
о, йопп! привет! а если надо убедиться, что type лишь уникальные? к примеру db.coll.find({}).limit(5) возвращает пять документов [{group_id: 4}, {group_id: 4}, {group_id: 2}, {group_id: 1}, {group_id: 8}] _id я опустил для упрощения. а хочется чтобы хуяк distinct/unique по полю group_id и вернуло либо [{group_id: 4}, {group_id: 2}, {group_id: 1}, {group_id: 8}] (что не совсем круто, т.к. стоял лимит 5, и хотелось бы получить 5) либо [{group_id: 4}, {group_id: 2}, {group_id: 1}, {group_id: 8}, {group_id: 10}]
Igor
проблему "хотим на сайте отобразить пять карточек от разных партнеров, не должны повторяться". может, sort меня здесь должен спасти, но гарантий же он никаких не даст?..
yopp
записей всего сколько?
Igor
сейчас - 3000. может быть раз в 10-50 больше. distinct('group_id') - сейчас 200. может быть тоже раз в 10 больше.
yopp
я правильно понимаю что у тебя есть коллекция, в которой есть аттрибут group_id. Тебе нужно выбрать 5 объектов с уникальным group_id?
Igor
да! сорри, что хреново сформулировал
yopp
по group_id индекс есть?
yopp
но вообще на 3к докуметов я бы не запаривался и делал бы как быстрее и понятнее
Igor
сделаем если что :) правда, удручает еще, что на проде монга 2.6.7 и обновляться не хотят
yopp
быстрее в смысле «быстрее реализуется»
yopp
на 3 тыщах докуметов вообще по барабану :)
Igor
ок, а 50 тыщ тоже пофигу? объекты небольшие, килобайт наверное плейнтекстом если
Igor
хотя я в любом случае планировал выбирать, скажем, limit(5*2) и фильтровать дальше на бекенде потом
Igor
просто переживаю, что монга может сработать сильно производительнее
yopp
писят тыщ килобайт это целых 48 мегабайт
yopp
это должна быть какая-то сильно порезанная по ресурсам виртуалка, чтоб прозед 48 мегабайт в памяти стал проблемой
yopp
но идея с 5*2 более простая, да
yopp
я бы её выбрал :)
Igor
спасибо огромное :)
Anonymous
Только агрегацией. Но толку от этого в целом мало. Лучше несколько запросов.
спасибо за ответ и про промисы-шмомисы в дальнейшем учту
George
привет. нет никакого нативного решения, чтобы выдавать последовательно результаты query в монге? Она работает довольно медленно, если составил сложный запрос и хотелось бы быстро получать информацию.
Alexander
курсор? я решал еще подобное пакетной обработкой
Alexander
то есть с использованием skip() и limit()
George
нужно передавать в аргумент функции результаты выполнения, так что итерироваться по курсору несколько раз не подходит
George
а через skip как?
Ростислав
Добрый день, подскажите пожалуйста, я новичок в mongodb, хочу написать приложение на связки express + mongodb, раньше писал на ruby, python немного на go, использовал postgres либо mysql, можете сказать пожалуйста какие есть ограничения у mongodb, в плане, на сколько она лучше/хуже postgres'а либо mysql, можно ли делать какой-то большой сервис целиком на связки mongo и express ?
Ростислав
Подобный medbooking.com
Cap
Ну конечно можно сделать, и будет както работать. Но для лучшего решения нужно изучить приемущества, недостатки, особенности монги и будет понятно где ее применить в твоем мега сервисе
Cap
Подобный medbooking.com
А почему решил на монге делать?
Ростислав
Очень много слышу про популярный стек MEAN, захотел изучить его, ну и как я понял mongo и express тесно дружат
Cap
Попробуй
Cap
Подобный medbooking.com
Обычный CRUD, его на чем угодно можно сделать норм, и нагрузок особых не предвидится
Ростислав
Спасибо)
Cap
Я использую монго в игровом сервере, мне нравится возможность хранить структурированые иерарх данные, т.е объекты перегоняю в json напрямую. Отсутствие схемы, гибко можно добавлять удалять поля(но осторожно)
Cap
Скорость довольно высокая
Cap
Удобно хранить разреженные данные(это в другом проекте, где система собирала статистику на покер игроков для системы принятия решени0й для бота)
Cap
Нравится gridFS, и не нада париться с sql blob
Ростислав
понял, спасибо за информацию)
yopp
Добрый день, подскажите пожалуйста, я новичок в mongodb, хочу написать приложение на связки express + mongodb, раньше писал на ruby, python немного на go, использовал postgres либо mysql, можете сказать пожалуйста какие есть ограничения у mongodb, в плане, на сколько она лучше/хуже postgres'а либо mysql, можно ли делать какой-то большой сервис целиком на связки mongo и express ?
Совершенно побарабану на чём начинать. На чём умеешь, на том и делай. Плюс монги в относительно низком пороге вхождения. В остальном база как база. Нужно запомнить что монга НЕ реляционная база данных и научится мыслить документами. Это значит что подходы из реляционной субд в монге будут работать из рук вон плохо. Ну и да, не надо забывать что транзакций нет, есть только гарантия атомарности изменений в одном документе. Это требует тоже отдельного мышления.
yopp
Но общее правило: если без транзакций никак — лучше брать не монгу
yopp
Потому что транзакции в монге ОЧЕНЬ сложно делаются
Ростислав
спасибо большое, учту!)
Eugene
Привет, ребят. Сделал 2 формы авторизации и регистрации. Теперь их как то надо обработать на node (желательно без express) и данные запихнуть в монгу. Подскажите мб туториал какой то по созданию и обработки форм и доку какую то
yopp
это в канал по ноде
Anonymous
привет, а кто может подсказать, правильно ли я понимаю что в монго не предполагаются join запросы, а для связей надо собирать айди в документе?
Anonymous
Есть $lookup в агрегациях.
Sergey
Если при работе с монгой понадобился $lookup, значит что-то пошло не так на этапе выбора СУБД
Anonymous
Если при работе с монгой понадобился $lookup, значит что-то пошло не так на этапе выбора СУБД
на самом деле тривиальная задача - посчитать количество записей пользователя, я просто хочу узнать как все таки верно
Anonymous
в доках указывается что вроде как нужно коллекционировать айди записей и добавлять их пользователю
Anonymous
Инкрементить счетчик при добавлении записи пользователя
просто используя key-value я бы при выборке посчитал бы все записи пользователя в отдельной таблице, в монге как я понимаю это не совсем правильное решение, верно?
Sergey
Инкрементить счетчик при добавлении записи пользователя
Потом обязательно где-нибудь разъедется. Count по индексу довольно дешёвый. Только надо в сообщения логин положить, а не связь с objectid. Логин же уникальный скорее всего?
Sergey
да, логин уникальный, а чем плоха связь через _id?
Тем, что это типичный sql-подход. А чем плохо - вот наше обсуждение тут говорит о том, чем плохо
Anonymous
Не понятна целиком задача, мало инфы
задача довольно простая - вывожу список пользователей и у каждого указываю количество записей, пользователь и запись связаны через _id
Anonymous
Тем, что это типичный sql-подход. А чем плохо - вот наше обсуждение тут говорит о том, чем плохо
извини, перечитал переписку но не догнал чем плохо, можешь объяснить, пожалуйста? Хочу понять.