Dmitriy
ну вообще findOneAndModify использую, да
а зачем тогда транзакция? у вас несколько коллекций задействуется в процессе обработки товара?
Serhii
Ребята посоветуйте пожалуйста Есть такая структура, arr: [{ field: [] }, { field: []}], как проверить что последний элемент внутри массива не включает в себя определенное value? типа arr[0].field[arr.length - 1] not include some string
Slavik
Привет, подскажите как можно вставить документ в такую схему: new mongoose.Schema({ 'layerName': { 'type': String, 'required': true }, 'layerObjects': [{ 'objectName': {'type': String, 'max': 30}, 'objectPlots': [{ type: Array, required: true }], }], 'validUpto': Date, 'addedBy': { 'type': mongoose.Schema.Types.ObjectId, 'ref': 'User' } } . Когда пытаюсь вставить через Layer.create({ layerName: layerName, layerObjects: layerObjects}) }; objectPlots будет пустым массивом
Alex
$push
Mike
Добрый день, есть ли возможность удалить субдокумент через updateMany ? т.е. удалить его сразу у нескольких документов по критерию
Mike
https://docs.mongodb.com/manual/reference/operator/update/pull/#remove-items-from-an-array-of-documents
подскажите что читать и делать чтобы такого скилла достичь как у вас😂
yopp
Разок документацию прочитать 😭
yopp
Всю
yopp
Там нужен только Reference раздел
yopp
Чтоб понимать что вообще в самой монге есть
yopp
И потом глазами пробежать по разделу с запросами чтоб понять какие кейсы что покрывает
yopp
А дальше нарабатывать опыт
yopp
Открою секрет: я в 90% случаев прост помню чо в гугл писать
yopp
В ещё 10% помню где сразу в доке смотреть)
Mike
спасибо
Aʟᴇx
подскажите что читать и делать чтобы такого скилла достичь как у вас😂
Может будет звучать грубо, но умение сформулировать вопрос - это 99% решения задачи
Dmitriy
в общем то то же что @dd_bb выше назвал умением задать вопрос гуглу)
Serhii
ребята а можно сделать $lookup, по одному из критериев, например есть поле test: null, test1: ‘id’, если поле не налл, то мы подставляем его в foreignField?
Alex
ну те тебе нужно написать агрегацию
Anonymous
всем привет решил реплику посмотреть без арбитра два сервер на одном уже primary а на другом startup2 уже минут 5 как быть? что может быть не так?
Anonymous
хотя вроде все так
Andrey
а есть возможность посмотреть лог транзакции? столкнутся с writeConflict в определенном кейсе (когда в коде приложения убрал таймаут), хотелось бы подробнее понять какие транзакции конфликтуют
critskiy
В общем, у меня тут небольшая заминка databse profiler. Есть у профилировщика настройка sampleRate, которая, насколько я понимаю, говорит о том, какой процент slowops будет писаться в profiler, но… Связана ли эта настройка по причине ресурсопотребляемости коллекции, несмотря на то, что ее можно сделать фиксированного размера, или sampleRate это чисто для любопытствующих прочекать как работает profiler?
S
можно ли атомарно в aggregate сделать object to array и reduce?
yopp
чтоб окно выборки было шире
yopp
плюс да, профайлер это не бесплатная операция
Aʟᴇx
То есть, Object to Array и Reduce, но чтобы выполнились либо обе, либо ни одна из этих операций?
critskiy
это способ разрядить статистическую выборку медленных запросов
т.е. получается проставляя значение sampleRate < 1, в slowlog пишутся операции превышающие slowms, которые вероятно превысят значение sampleRate?
yopp
т.е. получается проставляя значение sampleRate < 1, в slowlog пишутся операции превышающие slowms, которые вероятно превысят значение sampleRate?
> By default, sampleRate is set to 1.0, meaning all slow operations are profiled. When sampleRate is set between 0 and 1, databases with profiling level 1 will only profile a randomly sampled percentage of slow operations according to sampleRate.
yopp
всё кристально чисто написано
critskiy
а
critskiy
все
yopp
1.0 == 100%
critskiy
пардон
yopp
0 == 0%
yopp
0.5 = 50%
critskiy
моя осознал
Гена
Подскажите пожалуйста, что будет с индексами в бд когда мы будем ее шардировать?
yopp
будут на всех шардах
Гена
а с ними надо что то делать?
yopp
нет
Гена
или пересоздавать новый индекс для шардированого ключа?
yopp
не понимаю что вы имеете ввиду
Гена
я не пойму что-то ничего
Гена
To shard a non-empty collection, the collection must have an index that starts with the shard key.
Гена
получается нам надо создать новый индекс? или как?
yopp
пожалуйста, не надо сюда постить портянки
Гена
ок извините
Гена
я хотел более развернутый ответ дать
yopp
ограничтесь ссылкой на документацию
Гена
буду знать
yopp
вам нужно выбрать шард ключ
yopp
https://docs.mongodb.com/manual/core/sharding-shard-key/ https://docs.mongodb.com/manual/core/sharding-data-partitioning/ ключом является какой-то индекс
yopp
если нет индекса, который можно использовать в роли шард ключа, то его небходимо создать
yopp
шард ключ это любой набор аттрибутов документа, который обладает достаточной способность для деления
yopp
я очень рекомендую внимательно прочитать обе ссылки, особенно вторую
Гена
спасибо
yopp
общий смысл в том, что значения аттрибутов которые выбраны в качестве шард ключа, должны иметь такое число уникальных значений, чтоб у вас не получилось ситуации, когда на одно такое уникальное значение выпадает много документов
yopp
идеальная комбинация которая позволяет на одно значение ключа получить несколько десятков документов
yopp
но при этом ключ желательно иметь до какой-то степени псевдослучайный или надо будет вручную резать maxKey/minKey чанки и растягивать их по кластеру
yopp
и то, это не всегда помогает
Mike
@dd_bb по субдокументам не проконсультируете опять?😀
yopp
вы задавайте вопрос
yopp
я уже доедаю обед и сейчас убегу
Mike
вот у меня есть конструкция типа такой let changePermissionPromise = await Media.updateMany({ parentId: {$in: childFoldersArray } }, { $push: { internalShares : { userId: userToShare.publicId, permissions: req.body.permissions } } });
Mike
но оно постоянно добавляет новые значения, даже если в массиве internalShares есть объект с userId
Mike
т.е. я в идеале хочу чтоб при уникальности - создавалось - пири наличии - обновлялось