Николай
Daniil
с монго так нельзя?
Можно, но установление/закрытие соединения это довольно дорогой процесс, обычно открывается пул соединений при старте приложения, который используется все время работы, примеры организации такого подхода есть в документации любого драйвера
Николай
Николай
Примерно
Daniil
Обычно пулом управляет драйвер, там есть какие-то дефолтные значения
Артем
Всем привет!
Хотел бы узнать ваше мнение, для образобвательной платформы обучению языкам в виде игр, стоит ли использовать монгу, если был опыт просьба поделиться ) сервис на подобие lingleo
Anonymous
С нативным nodejs драйвером не работает исключение полей, например db.collection('inventory').find( { type: 'food' }, { type: 0 } ). Есть особенности?
Semyon V
Добрый день. Архитектурный вопрос. Нормальная ли практика сортировать по _id вложенных в массив документов? или же эффективнее ввести updateDate поле и обновлять по изменению массива поддокументов?
Константин
Привет. Кто подскажет, как правильно делать compact на шардированом 3.6 кластере? Схема каждого репликасета psa. Через mongos не позволяет такую операцию
Константин
𝚂𝚑𝚞𝚔𝚑𝚊
можно ли передать массив методов в shema.post([], fn(doc) {…})??
𝚂𝚑𝚞𝚔𝚑𝚊
Denis
Дмитрий
Всем привет, кто нибудь дангрейдил шардокластер из 3 шард до репликасета в докере?)
Denis
Дмитрий
Андрей
Товарищи, кто строил HA кластер на 2 ДЦ? Какой деплой лучше всего выбрать? На старте имею 3 хоста на одной стороне. Хочу эту сторону потушить и иметь праймари со вторичной репликой на той стороне, потом поднять ставший недоступным набор реплик и заиметь праймари там, где было.
MDWIT
Ребята, всем привет)
У меня есть api, на него высокая нагрузка. Сейчас соединение к монге активно постоянно.
Стоит стоит ли делать подключение к монге с каждым запросом и дисконнект после того как запрос окончен? В голове все перепуталось, не понимаю как правильно 😄
Deni
Deni
Тем более каждый раз новое соединение
yopp
yopp
посложнее это сделать правило чтоб все данные мигрировали на один шард, проверить что на других ничего не осталось
yopp
и перезапустить репликасет обеспечивающий этот шард как реплику
MDWIT
Oleg
привет, есть в монге механизмы репликации (публикации) отдельной базы или коллекции? в другой сервер(другой репликасет)
Viktar
Андрей
Oleg
я так понял это называется changeStream https://docs.mongodb.com/manual/changeStreams/
можно сделать в приложении
Александр
Добрый вечер.Подскажите, пожалуйста. Как лучше хранить фото в монге? string или byte &
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
Denis
Ihor
Weko
Всем привет, по тихоньку знакомлюсь с монго, появилась такая проблема
Есть набор коллекций:
[
{
‘_id’: ‘...’,
‘key’: ‘name’,
‘Value’: ‘foo’
},{
‘key’: ‘street,
‘Value’: ‘boo’,
‘_id’: ...
}, ... ]
Надо получить на выходе такое:
{
‘name’: ‘foo’,
‘street’: ‘boo’,
...
}
Возможно ли такое
Если да, то в каком направлении смотреть?
Bogdan
Всем привет, по тихоньку знакомлюсь с монго, появилась такая проблема
Есть набор коллекций:
[
{
‘_id’: ‘...’,
‘key’: ‘name’,
‘Value’: ‘foo’
},{
‘key’: ‘street,
‘Value’: ‘boo’,
‘_id’: ...
}, ... ]
Надо получить на выходе такое:
{
‘name’: ‘foo’,
‘street’: ‘boo’,
...
}
Возможно ли такое
Если да, то в каком направлении смотреть?
Aggregation
Artem
Подскажите как запрос дописать. В результате получил userId, теперь надо получить документы с такими userId. Можно сделать прямо в этом запросе?
Kirill
ребят, как написать запрос, который считает сколько раз UserEmail появлялся в базе?
например {user1@gmail.com: 1, user2@gmail.com: 3}
Denis
Artem
Pavel
Ребят, есть проблема, следующий код работает с коллекцией в 32000 клиентов и работает очень медленно
Pavel
Pavel
Как сделать быстрее
yopp
в лукапе не делать $unwind. сначала сделать $match по client, потом в $addFields сделать $reduce по массиву убрав ненужные по $neq условию
yopp
Artem
yopp
второй вариант это $lookup. Т.е. выбираете документ с userId (1), делаете $unwind по массиву, потом делаете $lookup, после чего фильтруете
Pavel
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 и тд
Nick
всем привет!
Есть такой запрос
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 и тд
также как и с толаОрдерс просуммировать
Nick
всем привет!
Есть такой запрос
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 и тд
rank лучше уже на стороне приклада
Nick
получится $sum: {$toDecimal : "$price"}
Nick
всем привет!
Есть такой запрос
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 и тд
про rank можете глянут ькак тут делается https://stackoverflow.com/questions/44587829/sorting-and-ranking-documents-based-on-key-values
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
Pavel
yopp
Строки для хранения денег будут или $toDecimal требовать или костыля типа такого https://t.me/mongodb_ru/89725