Евгений
тогда вам нужна агрегация $match $unwind $match (на случай если там есть еще чтото лишнее) $project (чтобы сформировать id для группировки из флагов) $group с суммирвоанием по id полученным на предыдущем шаге
то есть я не могу на уровне ванильного JS отфильтровать объект, сгенерировать новый и выплюнуть его в виде JSON-а? Просто давненько не писал бэк, потому и вопросы такие
Artem
Как же заебала монга со своей неоднозначностью и багами)
Евгений
мне ванильно проще будет, хотя в базе конечно же более правильно
Евгений
можно конечно, я думал вам надо именно в базе
вроде был метод вернуть в виде Array, нет? Не могу найти
Николай
Всем привет, есть ли в монгодб возможность генерировать objectid такой же структуры, как uuid/guid?
Николай
Ну или иной вопрос. Я хочу выстроить следующую логику: у меня есть книги, а есть жанры. Для каждой книги я храню массив Id шников, существующих в базе жанров. При запросе конкретной книги я хочу получать уже не массив Id, а массив полноценных объектов(id, name). При описании схемы я указал, что genres - ref genre. НО, при попытке populate в чистом виде(populate(genres'')), я получаю ничего) если в схеме данных тип для genres указать, как массив схемы genre, то я получаю объекты, все работает, как надо, но. Таком случае я не могу запись в базу сделать, как раньше, теперь монго ожидает, что отправлю не массив строк, а массив объектов. Это не даёт мне спать -_-
Николай
Это прескорбно
Daniil
Всем привет, есть ли в монгодб возможность генерировать objectid такой же структуры, как uuid/guid?
_id может быть любой, но генерировать его в таком случае вы должны сами на уровне приложения
Николай
Николай
Так и делал...
Anatoly
Привет. Можно ли ка кто в mongo сделать группировку по текстовому полю без учёта регистра. типа "Name" и "name" чтобы группировались в один элемент ?
WolderVsrat
Привет. Можно ли ка кто в mongo сделать группировку по текстовому полю без учёта регистра. типа "Name" и "name" чтобы группировались в один элемент ?
Мне в голову только приходит вариант перед группировкой прожект сделать, где привести нужное поле либо к верхнему либо к нижнему регистру
Nick
в группировке примерно так должно выглядеть _id: {$toLower: "$item"}
WolderVsrat
Хотя это можно сделать и в самой группировке точно
Anatoly
https://docs.mongodb.com/manual/reference/operator/aggregation/toLower/
Вот кстати тут кто то вчера монгу сглазил криками надоела эта багующая фигня, я ещё подумал да ни разу не видел багов. А тут делаю { $addFields: { lowName: { $toLower: '$name', }, }, }, и мне выводит поле lowName один в один как обычное, не привод к нижнему )
Anatoly
в группировке примерно так должно выглядеть _id: {$toLower: "$item"}
Судя по всему должно работать, но у меня почему то вообще не работает toLowe и toUpper. Уже из доки скопировал и всё равно ничего не меняет $project: { name: { $toUpper: '$name' }, },
Anatoly
[ { "_id": "5feb15635f245ca00c9c9ec4", "name": "Репетитор по математике" }, { "_id": "60098c0454ac39afb1caab36", "name": "Репетитор по математике" },
Nick
там есть такое неприятное замечание https://docs.mongodb.com/manual/reference/operator/aggregation/toLower/#behavior $toLower only has a well-defined behavior for strings of ASCII characters.
Anatoly
Понятно, спасибо :)
WolderVsrat
Тогда вместо туаппер/ловер свою функцию написать придется и обернуть ею Возможно ли так, хз, пока не пробовал.
Nick
нет, агрегации с произвольными js функциями не работают
Viktar
у меня есть две одинаковых коллекции phoneCatalog_old 301555514/93GB phoneCatalog 301555514/76GB меня смущает что у них разные размеры, хотя данные на 100% совпадают
Viktar
индексы тоже одинаковые
yopp
я так понимаю что из _old сделали вторую коллекцию, скорее всего разом, а значит данные легли более оптимально, плюс нет пула пустых страниц хранилища
yopp
по сути вы сделали то, что делает compact :)
yopp
ключевое слово «проапдейчена»
yopp
update это write операция, а так как WT это Copy On Write хранилище, оно при обновлении создало новые страницы для обновлённых данных, если старые не успели попасть в пул
yopp
*если старые не успели попасть в пул, были выделены новые с диска
Viktar
Спасибо. Не ожидал, что это так будет отличаться по месту на диске
Viktar
почти 20% разницы
yopp
там много нюансов, в том числе как сказал @yatoba ещё и сжатие
Viktar
сжатие идентичное
Viktar
block_compressor=zstd
yopp
сжатие идентичное
но данные по разному расположены
Евгений
Всем привет, дайте ссылку как максимально увеличить скорость запросов для mongoDB/Mongoose/NodeJS
Евгений
один ко многим отсутствуют
🫥
Всем привет,только начал своё знакомство с mongo , подскажите пожалуста, как мне обратится к списку actions в этом случае
Saidkamol
через точку
Saidkamol
я findOne использовалбы
🫥
через точку
а точку то куда внутри скобок или снаружи , там вроде если список следует то нужно ещё и квадратные скобки ставить
🫥
через точку
можешь пожалуйстапример запроса скинуть
Saidkamol
db.AC.findOne({filterkey:”filtervalue”}).actions
Saidkamol
по _id
Saidkamol
это не тебе пример я отправлял
Saidkamol
значит одно общее проперти должно быть
Saidkamol
у твоих продуктов
🫥
db.AC.findOne({filterkey:”filtervalue”}).actions
Интересно... Я так понимаю filterkey это значение Sessions, а какой аргумент нужно вставить вместо filtervalue??
Saidkamol
filterkey -_id filtervaluy -ObjectId(12345678..)
🫥
filterkey -_id filtervaluy -ObjectId(12345678..)
по братски сожешь чуть поразвернутей ответы довать, если всё одной колекции зачем указвать id? или как аргумент мне взять в качестве id?
🫥
вот на примере
А так тут квадратных скобка дело спасибо!!)
kk
всем привет. mongo3.6, в репликасете три ноды - одна primary и две secondary. у клиента на запись стоит writeConcern: majority. одна из секондари нод отваливается в recovery. как вычисляется majority в таком случае ? в доке описана ситуация только с тремя активными нодами: https://docs.mongodb.com/v3.6/reference/write-concern/#calculating-majority-for-write-concern
crazzy_lazzy=)
Всем привет, подскажите пожалуйста по поводу projection, правильно ли я понимаю, что формат записи {"field": 1} ничем не отличается от {"field": "$field"} ?
kk
нипанятно ) клиент на попытку записи вернёт ошибку?
yopp
Да, операция записи вернёт ошибку writeConcern timeout
yopp
надо посмотреть какие значения wtimeout по-умолчанию у драйверов, если они вообще выставлены
yopp
если не выставлены, то операция не получит ack пока не появится majority
Viktar
*если старые не успели попасть в пул, были выделены новые с диска
компакт уменьшил размер колекции phoneCatalog_old только до 90 гб
Viktar
самое интересное, что во вторую колекцию добавилось 800 тыс записей, и после компакта она на 1 гб тоже уменьшилась
Viktar
стала 75 гб
🫥
вот на примере
всем привет, подскажите пожулуйста как правильно обратится в данном случае к списку actions?
Александр
Добрый вечер. Подскажите, пожалуйста, в каких случаях лучше использовать mongoDBDriver, а в каких Mongoose ?
Kenan
Добрый вечер. Подскажите, пожалуйста, в каких случаях лучше использовать mongoDBDriver, а в каких Mongoose ?
Монгус, грубо говоря, валидатор входных данных. Да бы лишние в базу не занести. Само собой работа без обёрток будет быстрее
Александр
Вывод: c монгой всегда лучше использовать mongoose ?
Александр
Монгус, грубо говоря, валидатор входных данных. Да бы лишние в базу не занести. Само собой работа без обёрток будет быстрее
https://stackoverflow.com/questions/28712248/difference-between-mongodb-and-mongoose#:~:text=In%20terms%20of%20Node.,Object%20modeling%20tool%20for%20MongoDB.&text=Using%20Mongoose%2C%20a%20user%20can,management%20of%20data%20in%20MongoDB.