yopp
Но вне зависимости от subtype сериализация одинаковая
yopp
Subtype это про содержимое
Vadim
Добрый день, народ подскажите, а можно как то проверять уникальность элементов в массивах. Обычно при созданий просто флаг unique:true в schema указывал. Использую mongoose для взаимодействия с бд.
yopp
но таких запроосов лучше избегать, так как это потребует сканирования всего индекса или всей коллекции, если индекса нет
yopp
Добрый день всем, У кого то есть опыт сделать mongorestore в AWS Document DB, никак не получается, ошибка такая error connecting to host: could not connect to server: server selection error: server selection timeout, current topology: { Type: Single, Servers: [{ Addr: cluster-address:27017, Type: Unknown, State: Connected, Average RTT: 0, Last error: connection() : x509: certificate signed by unknown authority }, ] }
AWS Document Storage в целом не стоит считать совместимым с mongodb. У них есть поддержка ряда старых API из монги, но оно работает не совсем так. Вероятнее всего в вашем случае необходимо использовать mongotools для версии 2.x
LUVERISE
У вас тоже бд не работает?
Diego
Помогите разобраться с агрегированием в монгусе плз. есть сущность и мне нужно сгруппировать по определённому полю. То есть у меня сущность «Тест», например. У этой сущности есть поля Название, Создатель и тд. Мне надо по названию сгруппировать.
Max
привет, время от времени ловлю MongoError: Pool was force destroyed есть идеи как лечить? aws lambda mongoose ``` const options = { // bufferCommands: false, // bufferMaxEntries: 0, // useNewUrlParser: true, reconnectTries: 30, reconnectInterval: 500, poolSize: Number(process.env.DB_POOLSIZE) || 1, socketTimeoutMS: 2000000, keepAlive: true, useFindAndModify: true, }; ```
Max
Проверьте что вы не закрываете соединение
не закрываю 100% - разве что оно само под капотом закрывается... но не должно
yopp
Возможно инстанс лямбды отстреливают и какие-то запросы не успевают обработаться до закрытия соединения. Посмотрите, может быть можно подписаться на события в монгусе/драйвере. Пишите в лог когда меняется топология, когда открываются-закрываются соединения и посмотрите что происходит перед этой ошибкой
Viktar
тупо заигнорили...
Думаю, если бы знали, то ответили. Монгус тут не сильно популярная штука
Eugen
а что сейчас популярно ?
Viktar
а что сейчас популярно ?
Тут. Я не работал с ним. Думаю тут тоже мало с ним работали. Часто по монгусу тут нет ответа
Николай
Всем привет. Можно ли возвращать из монго одним запросом количество документов с параметром moderated: true и moderated:false. Тип 2 цифры просто
Nick
Всем привет. Можно ли возвращать из монго одним запросом количество документов с параметром moderated: true и moderated:false. Тип 2 цифры просто
агрегация с $group по данному полю и $sum:1 для подсчетов. В примере вместо _id: null указать ваше _id: moderated https://docs.mongodb.com/manual/reference/operator/aggregation/group/#count-the-number-of-documents-in-a-collection
Viktar
db.collection.aggregate([{$group:{_id:$moderated}, count: {$sum:1}}}])
Nick
db.collection.aggregate([{$group:{_id:$moderated}, count: {$sum:1}}}])
интересная запись, работает?
Viktar
интересная запись, работает?
collection.aggregate([{'$group': {'_id': '$' + field_name, 'count': {'$sum': 1}}}],allowDiskUse=True))
Viktar
из рабочего питоновского кода
Viktar
делал статистику по входным данным, какие поля принимают поля в колекции и сколько их
Nick
именно вот так $group:{$moderated
Viktar
_id пропустил
Николай
Правда пока не до конца понимаю как)
Nick
агрегация с $group по данному полю и $sum:1 для подсчетов. В примере вместо _id: null указать ваше _id: moderated https://docs.mongodb.com/manual/reference/operator/aggregation/group/#count-the-number-of-documents-in-a-collection
по ссылке инфа и примеры по работе с группироваками, и даже аналоги на SQL приведены если с ними проще понимание
Viktar
да.. документация у монги огонь. и Академия отличные курсы предлагает
Viktar
Правда пока не до конца понимаю как)
очень все просто, групировка по значению поля и подсчёт каунтов по каждому значению. в данном случает у вас не массив, поэтому по одному значению по документу. а соответственно равно количеству документов
Николай
Сохраню себе документик
Viktar
ааа, мы для этого в sum 1 передаем. Тип, если у нас не int поле, то он будет их считать. Если int, то суммировать. Спасибо
Тип поля не имеет значения. как только встретилось поле добавилось к сумме +1
Viktar
Дока говорит иначе
сумма тут для 1. она всегда число. а по полю идёт группировка
Viktar
{$sum: moderated} - посчитает сумму по полю.
Viktar
если числовое поле
Anatoly
Приветствую! Подскажите, пожалуйста, используется nodeJS + mongoose, вдруг приходит такая ошибка (обращение в БД для сохранения токена для админа при авторизации): RangeError [ERR_OUT_OF_RANGE]: The value of "offset" is out of range. It must be >= 0 && <= 17825792. Received 17825796 Причём повторяется только в одном месте, другие обращения в БД работают исправно. В процессе поиска нашёл вот это на SO: https://stackoverflow.com/questions/62129964/how-to-set-buffer-offset-range-in-mongodb-its-not-allowing-to-upload-more-than/62176290#62176290 Вроде бы документов больших не складываю, большой вложенности вроде бы тоже нет. Есть какая-то возможность залезть в БД и найти источник проблемы? 2 дня пытаюсь понять, в чём проблема, ни в какую не получается, первый раз такое вижу.
Anatoly
Зачем вообще в монге хранить бинарники?
Дык вроде и не должны они там быть
Zaur
Есть необходимость генерировать для каждого документа интовое поле, которое будет уникальным в пределах коллекции и автоинкрементиться. Подскажите такое решение можно использовать? Безопасное ли оно?
Zaur
интересует есть ли риск получить два одинаковых параметры для двух разных документов .
Diego
а есть, кто может подсказать с одним агрегированным запросом в личку? я могу оплатить час работы. хочу сделать классный запрос, чтобы на фронте не делать никаких циклов
Diego
у меня пока так. но это не совсем то что надо.
Diego
у меня в таблице Test есть поле Status. Там могут быть 3 разных значения. Мне надо тесты разбить на группы по id (что я сделал), но также для каждой группы добавить поля типа normStatus: 10, notNormStatus: 5, nullStatus: 2. Шоб в итоге вышло типа такого [{_id: 1, name: 'name1',normStatus: 10, notNormStatus: 5, nullStatus: 2 }, {_id: 2, name: 'name2',normStatus: 0, notNormStatus: 3, nullStatus: 3 }, {_id: 3, name: 'name3',normStatus: 10, notNormStatus: 5, nullStatus: 2 }]
Bogdan
Привет, подскажите, нужно делать повторяющуюся операцию для всех записей (примерно 10 млн), использую стримы по 100к. Задумался над тем, что можно не использовать лимит, и через стрим проганять все записи. Вопрос, блокирует ли стрим с курсором дб на запись?
Oleh Kopyl
{ $or: [ { $neq: {field: null} }, { $neq: {field: ‘’} } ] }
Такого нет в доке в операторах. И почему не $nin ?
Anonymous
Всем привет. Только начал использовать mongoDB , создал cluster в Atlas и запустил. И появляется такая ошибка. ПомогитИ)
Anonymous
Добавьте свой ip адрес в вайтлист
Добавил, ушла одна ошибка, но осталось всё ещё одна.(node:6788)
Viktar
)) скиньте текст ошибки.
Anonymous
(node:2584) Warning: Accessing non-existent property 'MongoError' of module exports inside circular dependency (Use node --trace-warnings ... to show where the warning was created) MongooseServerSelectionError: connection <monitor> to 3.125.166.218:27017 closed
V
https://pastebin.com/rRkEh94A
V
Unhandled rejection TypeError: UserModel.find(...).sort(...).limit(...).toArray is not a function
V
подскажите как сиправить?
V
есть кто живой?
Viktar
Вы пытаетесь использовать могу как реляционную базу данных. Это немного не правильно. Монга плохо умеет джойнить. Посмотрите aggregate и lookup.
Viktar
lookup это и есть джоин
Вы правы, результат тот же.
Vova
@yatoba @dd_bb
Pythonic
Я же правильно понимаю, milti-document transactions уже доступно и для одного инстанса монги?
Pythonic
У меня появилось проблема. Надо обновить несколько атрибутов данных в одном документе, и это реализовать в рамках транзакции. Я могу это реализовать в рамках транзакции монги? Или придется реализовать это в коде на уровне аппки?
yopp
У меня появилось проблема. Надо обновить несколько атрибутов данных в одном документе, и это реализовать в рамках транзакции. Я могу это реализовать в рамках транзакции монги? Или придется реализовать это в коде на уровне аппки?
да, транзакции доступны и для single node replica set. Для обновления в рамках одного документа транзакции не нужны: Изменения применяются атомарно. Транзакции необходимы когда вы обновляете несколько документов и обновления взаимосвязаны
yopp
Такого нет в доке в операторах. И почему не $nin ?
Ой, да, это $ne. Можно и $nin $in/$nin это синтаксический сахар
Pythonic
да, транзакции доступны и для single node replica set. Для обновления в рамках одного документа транзакции не нужны: Изменения применяются атомарно. Транзакции необходимы когда вы обновляете несколько документов и обновления взаимосвязаны
Если одним запросом обновлять документы - то вопросов нет. А я про случай где есть набор логики, где в середине надо записать данные в монгу и дальше пойти по списку логики, и все это обернуть в транзакцию - если код упадет где-то в середине то откатить данные.
Dmitriy
Коллеги. Подскажите пожалуйста как удалить элемент массива по его индексу? user: { items: [ {count: 10, code: 'Jkdoof'}, {count: 20, code: 'Fdege'}, {count: 30, code: 'Cvvefg'}, {count: 40, code: 'Wkrrc'}, ] }; Вот мне нужно удалить в массиве items элемент с индексом 2 {count: 30, code: 'Cvvefg'}, Подскажите как это сделать?
Pythonic
А почему бы не записывать результат когда все необходимые действия выполнены?
Есть два решение этой проблемы, в конце записывать результат, либо обернуть в транзакцию. Мне больше интересует второй вариант, так как он более безопасен и проще в реализации.
yopp
С точки зрения безопасности вариант не изменять состояние базы данных промежуточными результатами наиболее корректно. Но если реализация проще, то почему бы и нет. Конвертните ваш инстанс в реплику и оберните логику в транзакцию.
Vladyslav
Делал кто partial search для монго не используя Regex?
Pavel
Добрый день, кто нибудь сталкивался? монга запущена, а компас не подключатеся