Daniil
с монго так нельзя?
Можно, но установление/закрытие соединения это довольно дорогой процесс, обычно открывается пул соединений при старте приложения, который используется все время работы, примеры организации такого подхода есть в документации любого драйвера
Николай
Примерно
Daniil
Обычно пулом управляет драйвер, там есть какие-то дефолтные значения
Николай
Обычно пулом управляет драйвер, там есть какие-то дефолтные значения
А как после создания пула соединений прокинуть соединение по всему приложению?
Артем
Всем привет! Хотел бы узнать ваше мнение, для образобвательной платформы обучению языкам в виде игр, стоит ли использовать монгу, если был опыт просьба поделиться ) сервис на подобие lingleo
Anonymous
С нативным nodejs драйвером не работает исключение полей, например db.collection('inventory').find( { type: 'food' }, { type: 0 } ). Есть особенности?
Yaroslav
Всем привет! Хотел бы узнать ваше мнение, для образобвательной платформы обучению языкам в виде игр, стоит ли использовать монгу, если был опыт просьба поделиться ) сервис на подобие lingleo
Смотри, стоит понимать, что построение архитектуры бд на базе монги кардинально отличается от sql решений, лучше стараться избегать множества ссылок на соседние коллекци и делать их мало связанными. Так же стоит учесть, что у тебя в бд могут храниться не структурированные данные.
Semyon V
Добрый день. Архитектурный вопрос. Нормальная ли практика сортировать по _id вложенных в массив документов? или же эффективнее ввести updateDate поле и обновлять по изменению массива поддокументов?
Константин
Привет. Кто подскажет, как правильно делать compact на шардированом 3.6 кластере? Схема каждого репликасета psa. Через mongos не позволяет такую операцию
𝚂𝚑𝚞𝚔𝚑𝚊
можно ли передать массив методов в shema.post([], fn(doc) {…})??
Denis
можно ли передать массив методов в shema.post([], fn(doc) {…})??
Эти приколы в монгусе вредные, потому что не атомарные, лучше используй aggregation update для атомарной серии апдейтов, или реализации computed полей
Semyon V
Ну во втором варианте индекс явно будет весить меньше
а правильно ли я понимаю, что _id поддокументов и без того индексируется? тогда ведь достаточно будет сортировать по нему?
Дмитрий
Всем привет, кто нибудь дангрейдил шардокластер из 3 шард до репликасета в докере?)
Андрей
Товарищи, кто строил HA кластер на 2 ДЦ? Какой деплой лучше всего выбрать? На старте имею 3 хоста на одной стороне. Хочу эту сторону потушить и иметь праймари со вторичной репликой на той стороне, потом поднять ставший недоступным набор реплик и заиметь праймари там, где было.
MDWIT
Ребята, всем привет) У меня есть api, на него высокая нагрузка. Сейчас соединение к монге активно постоянно. Стоит стоит ли делать подключение к монге с каждым запросом и дисконнект после того как запрос окончен? В голове все перепуталось, не понимаю как правильно 😄
Deni
Тем более каждый раз новое соединение
yopp
посложнее это сделать правило чтоб все данные мигрировали на один шард, проверить что на других ничего не осталось
yopp
и перезапустить репликасет обеспечивающий этот шард как реплику
Semyon V
Нет, не индексируется
а как же сортировка по _id так шустро работает?
Дмитрий
Самый простой вариант это dump & restore
меня просто слегка смутила скорость дампа - у меня 14кк документов дампились около 8 часов, правда через впн...
Oleg
привет, есть в монге механизмы репликации (публикации) отдельной базы или коллекции? в другой сервер(другой репликасет)
Андрей
привет, есть в монге механизмы репликации (публикации) отдельной базы или коллекции? в другой сервер(другой репликасет)
Этим же вопросом сегодня был озадачен) Выборочно онлайн экстернал реплику только самому писать, похоже.
Oleg
я так понял это называется changeStream https://docs.mongodb.com/manual/changeStreams/ можно сделать в приложении
Александр
Добрый вечер.Подскажите, пожалуйста. Как лучше хранить фото в монге? string или byte &
Viktar
Добрый вечер.Подскажите, пожалуйста. Как лучше хранить фото в монге? string или byte &
Есть практика, не хранить в базе файлы. Но если хранить, то GridFS
Александр
Viktar
Александр
Ihor
Ihor Storonianskyi, [15 лют. 2021 р., 19:23:28]: Всем привет. Кто может подсказать как с модели Монго бистро витащить коунт з фильтрами, бо зависает? такая ошибка Failed to send "count" command with database "control_tower": Failed to read 4 bytes: socket error or timeout
Weko
Всем привет, по тихоньку знакомлюсь с монго, появилась такая проблема Есть набор коллекций: [ { ‘_id’: ‘...’, ‘key’: ‘name’, ‘Value’: ‘foo’ },{ ‘key’: ‘street, ‘Value’: ‘boo’, ‘_id’: ... }, ... ] Надо получить на выходе такое: { ‘name’: ‘foo’, ‘street’: ‘boo’, ... } Возможно ли такое Если да, то в каком направлении смотреть?
Artem
Подскажите как запрос дописать. В результате получил userId, теперь надо получить документы с такими userId. Можно сделать прямо в этом запросе?
Kirill
ребят, как написать запрос, который считает сколько раз UserEmail появлялся в базе? например {user1@gmail.com: 1, user2@gmail.com: 3}
Denis
Подскажите как запрос дописать. В результате получил userId, теперь надо получить документы с такими userId. Можно сделать прямо в этом запросе?
Брат в каждом шаге агрегейта ты модифицируешь сет документов шаг за шагом, в 10 шаге сделать match на документы из первого шага например - не получится. То есть добавив еще 1 шаг, ты можешь работать только с тем что у тебя в result щас
Pavel
Добрый вечер.Подскажите, пожалуйста. Как лучше хранить фото в монге? string или byte &
Храни фото в папке по _id. Должна быть коллекция "юзвери", коллекция "фотографии". Потом aggregate.lookup, или mongoose.populate и все
Artem
Брат в каждом шаге агрегейта ты модифицируешь сет документов шаг за шагом, в 10 шаге сделать match на документы из первого шага например - не получится. То есть добавив еще 1 шаг, ты можешь работать только с тем что у тебя в result щас
Окей. Как тогда лучше решить задачу: есть userId (1), надо взять все другие userId (2) из базы, id которых есть в документе с userId (1), при условии, что userId(1).date - userId(2).date меньше определенного числа (как на скрине)?
Pavel
Ребят, есть проблема, следующий код работает с коллекцией в 32000 клиентов и работает очень медленно
Pavel
Pavel
Как сделать быстрее
yopp
в лукапе не делать $unwind. сначала сделать $match по client, потом в $addFields сделать $reduce по массиву убрав ненужные по $neq условию
yopp
Окей. Как тогда лучше решить задачу: есть userId (1), надо взять все другие userId (2) из базы, id которых есть в документе с userId (1), при условии, что userId(1).date - userId(2).date меньше определенного числа (как на скрине)?
Думаю что проще всего в два запроса: первым выбрать список userId (2) из userId (1), а вторым выбрать документы по $match с $in по полученному списку и фильтровать по вашему условию
yopp
второй вариант это $lookup. Т.е. выбираете документ с userId (1), делаете $unwind по массиву, потом делаете $lookup, после чего фильтруете
yopp
https://docs.mongodb.com/manual/tutorial/query-array-of-documents/ Или я не понимаю вашу задачу
Artem
Всем привет Есть input коллекция с колличеством полей, при выполнении агреции output соответсвенно без изначальных данных Вопрос: как правильно перекинуть данные с input в output?
Vladislav
Всем привет, встал вопрос по поводу миграций. Юзаю монгус, в нем описана сложная валидация схем и все прочее, сейчас появилась задача добавить связь к существующим схемам. Я должен описать в миграциях сначала создание этих самых схем?
Pavel
Pavel
Код работает в 20 раз быстрее, но вот это выражение отрабатывает. unwind мне в помощь?
Kirill
всем привет! Есть такой запрос const rank = await UsersOrders.aggregate([ { $match: { EndTime: { $gte: "2020-11-01T00:00:00.000+00:00", $lte: "2021-02-09T23:59:59.999+00:00", }, }, }, { $unwind: "$CartObject.OrderItems" }, { $group: { _id: "$CartObject.OrderItems.Name", totalOrders: { $sum: "$CartObject.OrderItems.Quantity" }, totalSales: { $push: "$CartObject.OrderItems.PricePerUnit" }, }, }, { $sort: { totalOrders: -1 } }, вот ответ { "_id": "Carlos Salsa", "totalOrders": 13, "totalSales": [ "2.99", "2.99", "2.99", "2.99", "2.99", "2.99", "2.99" ] }, Как я могу дописать запрос, чтобы прилетал не массив TotalSales, а единое сумма? А так же как я могу добавить поля rank? элемент где больше всего TotalOrders, то rank у него 1, у следующего 2 и тд
Kirill
также как и с толаОрдерс просуммировать
TotalOrders - число, а тут массив строк
Nick
TotalOrders - число, а тут массив строк
тогда надо перед этим кастануть в число https://docs.mongodb.com/manual/reference/operator/aggregation/toDecimal/
Nick
получится $sum: {$toDecimal : "$price"}
Nick
вам нужно будет после сортировки вставить группировку по константному _id: null вместо $name из их примера
Kirill
а если работаю с монго версией ниже 4.0?)
Kirill
тогда надо перед этим кастануть в число https://docs.mongodb.com/manual/reference/operator/aggregation/toDecimal/
Kirill
получится $sum: {$toDecimal : "$price"}
Kirill
отлично, спасибо
Kirill
вам нужно будет после сортировки вставить группировку по константному _id: null вместо $name из их примера
Nick
в сам лукап можно вставить часть пайплайна https://docs.mongodb.com/manual/reference/operator/aggregation/lookup/#join-conditions-and-uncorrelated-sub-queries
yopp
а если работаю с монго версией ниже 4.0?)
Если вы работаете с монгой ниже 4.0, то храните в int в центах или долях центов.
yopp
Строки для хранения денег будут или $toDecimal требовать или костыля типа такого https://t.me/mongodb_ru/89725