Daniil
Daniil
Чтобы следующие 20 штук получить нужно ввести it
Oleh Kopyl
Viktar
Oleh Kopyl
Viktar
Да. Телефон поменял))
Oleh Kopyl
Oleh Kopyl
Oleh Kopyl
Sergey
Добрый день. Можно ли сделать выборку из таблицы и потом эту выборку удалить? Какой командой?
Sergey
Вопрос снимается :)
Oleh Kopyl
kk
kk
https://docs.mongodb.com/manual/reference/method/db.collection.remove/
Sergey
I
Вопрос, а можно как то забуфирезировать данные в память. Вроде как лимит 100мб только. А можно увеличить? К примеру, по такому сценарию: прежде чем выполнить операции манга считает все таблицы в оперативку и даст еще приличный буфер в памяти
I
Для промежуточных группировок и т.д
Oleg
I
I
А есть еще рецепты по ускорению?
D.
https://docs.mongodb.com/manual/reference/method/cursor.allowDiskUse/
I
Может многопоточка там и т.д
I
Lev
Как спровоцировать ошибку при upsert?
Dima
привет
подскажите как mongo сделать аналог read for update lock ?
чот не могу найти ничего внятного, кроме атомарных операций
спасибо
yopp
yopp
yopp
Lev
Какого рода?
Да... хз... какого нибудь, Разного. Протестить как код реагирует на это
yopp
I
Ну в общем, я просто пытаюсь помочь, может не могу передать всю суть проблемы. Просто очень долго делается запрос. Более минуты
I
Очень много данных
I
Вот и думаю может у них трабла с кешем
I
Знаю что упор на группировку из нескольких таблиц
I
Данных, где то три таблицы и в каждой приблизительно 10000 тыс документов
yopp
Вероятнее всего проблема решиться созданием поддерживающих запросы индексов
yopp
I
Кажется 10000 но, при группировки видимо создаются различные варианты и происходит перемножение
I
Тыс
yopp
10 тысяч документов это небольшие объемы. Вероятнее всего хватит создать индексов по медленным запросам
I
I
По индексам и т.д, т.е что бы ускорить всю эту громадину
yopp
https://docs.mongodb.com/manual/tutorial/optimize-query-performance-with-indexes-and-projections/
I
I
yopp
Ну или ноду уронить
I
@dd_bb еще вопрос, сильно ли влияет на скорость если у документа много данных?
I
Но от документа требуется только id например, при групировки
yopp
Зависит от того, сколько «много» :)
yopp
Но да, чем больше размер документа, тем больше надо читать данных с диска, тем дольше будет выполнятся запрос
I
I
А то где то читал что мол, не важно сколько в документе данных если мы от него требуем только индексовый ключ,
yopp
Не совсем так
yopp
Индекс позволяет только найти документ. Но если требуется получить данные из найденного документа, то их скорее всего нет в индексе и необходимо прочитать документ. А для этого нужно его загрузить :)
yopp
И это можно сделать только целиком
I
Да, логично
yopp
Единственное исключение это covered queries: когда проекция и условия запроса полностью покрываются одним индексом
I
Т.е получается, мы находим документ по индексу, индекс как указатель дает нам доступ к документу, и если у документа много данных, хоть нам и нужно будет от него только два поля, но те данные которые в нем есть, будут тормозить процесс чтения. Верно?
yopp
Да, примерно так
I
Спасибо
I
А намного эластик круче монги, когда речь заходит о агригации , групировки
I
?
Zaur
I
yopp
Если вы хотите на время чтения и обновления заблокировать другие операции с документом, то это невозможно. В монге в принципе нет user defined locks. Проще говоря только сама монга может блокировать данные.
Но за счёт того, что транзакции изолированны и не видимы для других клиентов до коммита, вы можете обернуть все операции в транзакцию и получить почти такой-же эффект.
Разница только в том, что клиенты смогут читать документ до завершения транзакции, но увидят новую версию сразу после её применения и достижения требуемого уровня гарантии доступности.
Из минусов — при параллельном обновлении одного документа будут возникать конфликты, которые вашему приложению придётся разрешать самостоятельно
Dmitriy
Коллеги, подскажите пожалуйста по агрегациям.
У меня есть документы такого вида (products)
_id: string;
user: string;
currency: 'UAH' | 'RUB' | 'USD'
income: number;
Мне нужно по итогу сделать так
user: 10,
info:
{
UAH: (Сумма income у которых currency UAH),
RUB: (Сумма income у которых currency RUB),
USD: (Сумма income у которых currency USD),
}
Просто подскажите каким методом лучше всего пользоваться? Я пока вижу только вариант в group info делать акумулятор, но может кто подскажет другой какой то выход?
yopp
Коллеги, подскажите пожалуйста по агрегациям.
У меня есть документы такого вида (products)
_id: string;
user: string;
currency: 'UAH' | 'RUB' | 'USD'
income: number;
Мне нужно по итогу сделать так
user: 10,
info:
{
UAH: (Сумма income у которых currency UAH),
RUB: (Сумма income у которых currency RUB),
USD: (Сумма income у которых currency USD),
}
Просто подскажите каким методом лучше всего пользоваться? Я пока вижу только вариант в group info делать акумулятор, но может кто подскажет другой какой то выход?
На мой взгляд наиболее простой вариант это сделать в два три шага:
$group: _id: { user, currency }, income: $sum {income}
$group: _id: { user }, info: $push [_id.currency, income]
$addFields: info: $arrayToObject info
Dmitriy
хм, спасибо за подсказки
yopp
А user: 10 это количество пользователей?