Алишер Абдуллаев
Нужно к этому стремится, но есть исключения. Один из основных факторов - максимальный размер документа в коллекции - 16Мбайт
ок , спасибо. но было бы круто если есть взаимосвязь смежду коллекциями. Чтобы и работать с ними было проще
Nick
ок , спасибо. но было бы круто если есть взаимосвязь смежду коллекциями. Чтобы и работать с ними было проще
взаимосвязь толкьо на уровне софта, монга не предоставляет никаких механизмов
Nick
за исключением упрощения выборки через $lookup
Алишер Абдуллаев
AstraSerg
ок , спасибо. но было бы круто если есть взаимосвязь смежду коллекциями. Чтобы и работать с ними было проще
В каком смысле взаимосвязь? Просто сохранить ссылку на другой документ не подходит?
Nick
на уровне софта как понять , подскажите пожалуйста ?
т.е. вы полностью контролируете все что вы понимаете под свзями между доками в разных коллекциях, т.е. обеспечиваете целостность данных
Алишер Абдуллаев
за исключением упрощения выборки через $lookup
лучше работать с самой монгодб или монгус ?
Nick
лучше набраться опыта и для себя решить что лучше
Алишер Абдуллаев
В каком смысле взаимосвязь? Просто сохранить ссылку на другой документ не подходит?
неа , писанье много будет. просто было такое дело , при регистрации юзера получился бы сохранить за одно и сам юзер и его дополнительные параметры в другую коллекцию
Al
всем привет! А как вставлять subdocuments таким образом, что бы было поле sort которой с каждой вставкой увеличивается, что бы потом менять его при сортировке объектов при надобности... и при этом вставлять атомарно? что то типа плагина для автоинкремента.. или может есть какое то простое решение?
Al
ну что бы было User { profiles:[ { name: "test1", sort: 10 }, { name: "test2", sort: 20 }, ] }
Al
транзакции тут излишни... ну а если не атоморно?
Nick
нет такого
Al
сортировка эта не критична по сути.. все равно юзер легко пересортирует..
Nick
придется накручивать свое, а свое потреубет транзакций
Al
ну а как бы Вы сортировку сделали?
Al
сабдокоментов? может и не нужно поле sort
Nick
я бы ее не делал
AstraSerg
а не вызывать функции одну за другим )
Сделайте функции, которые формируют все данные, и занесите эти данные в БД одним запросом. Зачем вам обязательно 2 разные коллекции?
Nick
сделает фронтендер на стороне клиента
Al
а скажем по умолчанию сортировать так как вставлены или по дате.. а после того как пересортировали уже весь массив заново переписать.
Al
сделает фронтендер на стороне клиента
ну на клиент будет сортировка драг энд дропом, а сохранить то ее как?
Al
кстати этих сабдоков не более 15
Nick
какая разница как это будет на клиенте
Al
сделает фронтендер на стороне клиента
ну говорите про клиент, я и сказал что там будет
Nick
вам нужно решить какуюто задачу, какую?
Al
сортировку этих нескольких профилей которые в сабдоках юзера
Al
что бы ее сохранять
Nick
вы не поняли вопроса, какая глобальная задача?
Al
вы не поняли вопроса, какая глобальная задача?
ну причем тут глобальная то? система оплаты проекта.. нужно сортировать платежные профили.
Nick
например вывести чтото на страницу в опредленном порядке
Al
нужно что бы юзер сортировал свои платежные профили. и это сортировка сохранялась!
Алишер Абдуллаев
Сделайте функции, которые формируют все данные, и занесите эти данные в БД одним запросом. Зачем вам обязательно 2 разные коллекции?
да да , я тоже так думаю. Можно было найти выход , т.е работать с 2 коллекциями, но уже дедлайн.
Nick
вот
Nick
значит просто удаляете старый массив и сохраняете в новом порядке после обновления
Al
скажем поднял какую то карту на самый верх.. и потом она так вверху и выводилась.. ну и платилось с нее в первую очередь.
Al
значит просто удаляете старый массив и сохраняете в новом порядке после обновления
хорошо а исходный массив до сортировки как сортировать? никак ?
Алишер Абдуллаев
Сделайте функции, которые формируют все данные, и занесите эти данные в БД одним запросом. Зачем вам обязательно 2 разные коллекции?
а бд платежной системы , хранить в отдельном коллекции или его тоже в одну ? Поделитесь пожалуйста, у вас была интеграция платежной системы ? куда параметры хранили ?
Nick
зачем его сортирвоать? он будет в правильном порядке сразу
Al
значит просто удаляете старый массив и сохраняете в новом порядке после обновления
можете подсказать команду... подозреваю что это типа update user итп
Al
$push новый массив
Al
или может user.profiles = новый массив; user.save() да и все..
Nick
можете подсказать команду... подозреваю что это типа update user итп
да там просто будет update: {$set: {'path.to.array': newArray}}
Al
да там просто будет update: {$set: {'path.to.array': newArray}}
ага а сам новый массив просто переменная из приложения..
Nick
если у вас монгус, то просто в самой сущности формируете парвильный порядок в массиве и сохраняете ее
Nick
а почиму так нельзя?
можно, но вы про монгус не упоминали
Al
да монгус.. что значит в самой сущности? так что ли user.profiles = новый массив; user.save() или типа user.profiles.map user.profiles.sort так можно?
Al
а нормально было бы с фронта передавать при драг енд дропе просто id-ники в верном порядке? а не те два id которые юзер поменял местами?
Nick
остановитесь, поймите что вам нужно сохранить тупо порядок элементов в массиве, а не заниматсья сортировками
AstraSerg
да да , я тоже так думаю. Можно было найти выход , т.е работать с 2 коллекциями, но уже дедлайн.
На сколько я понимаю, у вас нет стойких оснований для создания 2 коллекций, значит делайте всё в одной. Нет четких правил по созданию набора коллекций для проекта. РЕкомендуется создавать одну коллекцию на одну сущность в проекте. Типа пользователи - одна коллекция, банки - другая ит.п.
Al
остановитесь, поймите что вам нужно сохранить тупо порядок элементов в массиве, а не заниматсья сортировками
что бы порядок элементов в массиве изменился, его нужно или отсортировать в приложении или заново сформировать? а как еще?
Al
ну типа newArr = [] newArr.push() ну и добавлять в порядке как с фронта прислали. затим монгусой присвоить и сохранить
Nick
что бы порядок элементов в массиве изменился, его нужно или отсортировать в приложении или заново сформировать? а как еще?
простой вариант - передавать полный массив с фронта, если данных слишком мног ои хочется зачемто оптимизировать, то делайте дифы, но тогда по хорошему вам потреубется еще првоерять что с момента деланья дифа исходный массив не изменился, т.к. юзер легко может делать это из разных вкладок/браузеров/девайсов
Anonymous
Как сделать вставку в БД с помощью mongoose уже в существующую ячеку, а не создавать новую? Интересует сам метод вставки
Nick
find -> change -> save
Anonymous
Спасибо
Anonymous
Слушайте, нужно статистику под приложение сделать, есть юзеры, нужно сделать так: сколько за день было сделано заказов, сколько юзеров зарегалось и т.д как это все реализовать ? есть ли методы такие в монги или все нужно писать на серве, вручную ?
Anonymous
Можно так например: db.orders.count({'created': {$gte: <start of the day>, $lt: <end of the day>}})
можно также и с суммой брать, типо взяять все за сегодня продажи, и сумировать их сумму ?
AstraSerg
конечно. Это делается через aggregation pipeline
Anonymous
конечно. Это делается через aggregation pipeline
шикарно просто с монгой только пару дней работаю, сижу пока разбираюсь )
Anonymous
так что возможно будут тупые вопросы ))
Anonymous
Монга может хранить массив в качестве значений?
Serhii
Всем привет. Можно ли имея лишь айдишку достать записи которые были созданы раньше?
Nick
народ ктото занимался пресплитом и ручным мувом чанков при шардирвоания в монге 3.6+ ? столкнулся с пробелмой, что изза параметар orphanCleanupDelaySecs в 15 минут мув чанков занимает все те же 15 минут. Может ест ьвменяемы способ сделать пресплит?
yopp
двигаем чанка на нужный шард
yopp
и дальше делим там