yopp
Но вне зависимости от subtype сериализация одинаковая
yopp
Subtype это про содержимое
Vadim
Добрый день, народ подскажите, а можно как то проверять уникальность элементов в массивах. Обычно при созданий просто флаг unique:true в schema указывал. Использую mongoose для взаимодействия с бд.
yopp
yopp
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
Помогите разобраться с агрегированием в монгусе плз.
есть сущность и мне нужно сгруппировать по определённому полю.
То есть у меня сущность «Тест», например.
У этой сущности есть поля Название, Создатель и тд.
Мне надо по названию сгруппировать.
Vladislav
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,
};
```
yopp
привет, время от времени ловлю 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,
};
```
Проверьте что вы не закрываете соединение
yopp
Возможно инстанс лямбды отстреливают и какие-то запросы не успевают обработаться до закрытия соединения. Посмотрите, может быть можно подписаться на события в монгусе/драйвере. Пишите в лог когда меняется топология, когда открываются-закрываются соединения и посмотрите что происходит перед этой ошибкой
Eugen
Viktar
тупо заигнорили...
Думаю, если бы знали, то ответили. Монгус тут не сильно популярная штука
Eugen
а что сейчас популярно ?
Viktar
а что сейчас популярно ?
Тут. Я не работал с ним. Думаю тут тоже мало с ним работали. Часто по монгусу тут нет ответа
Николай
Всем привет. Можно ли возвращать из монго одним запросом количество документов с параметром moderated: true и moderated:false. Тип 2 цифры просто
Николай
Viktar
db.collection.aggregate([{$group:{_id:$moderated}, count: {$sum:1}}}])
Nick
Viktar
интересная запись, работает?
collection.aggregate([{'$group': {'_id': '$' + field_name, 'count': {'$sum': 1}}}],allowDiskUse=True))
Viktar
из рабочего питоновского кода
Viktar
делал статистику по входным данным, какие поля принимают поля в колекции и сколько их
Nick
именно вот так $group:{$moderated
Viktar
_id пропустил
Николай
Николай
Правда пока не до конца понимаю как)
Nick
Viktar
да.. документация у монги огонь. и Академия отличные курсы предлагает
Viktar
Правда пока не до конца понимаю как)
очень все просто, групировка по значению поля и подсчёт каунтов по каждому значению. в данном случает у вас не массив, поэтому по одному значению по документу. а соответственно равно количеству документов
Николай
Николай
Сохраню себе документик
Viktar
Николай
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 дня пытаюсь понять, в чём проблема, ни в какую не получается, первый раз такое вижу.
Vladislav
Anatoly
Zaur
Есть необходимость генерировать для каждого документа интовое поле, которое будет уникальным в пределах коллекции и автоинкрементиться. Подскажите такое решение можно использовать? Безопасное ли оно?
Zaur
интересует есть ли риск получить два одинаковых параметры для двух разных документов .
Diego
а есть, кто может подсказать с одним агрегированным запросом в личку?
я могу оплатить час работы. хочу сделать классный запрос, чтобы на фронте не делать никаких циклов
Diego
у меня пока так. но это не совсем то что надо.
Vladislav
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 }]
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 }]
по id условия, которое я храню в у теста
Vladislav
у меня в таблице 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 }]
посмотри это https://stackoverflow.com/questions/14102596/conditional-sum-in-mongodb
Bogdan
Привет, подскажите, нужно делать повторяющуюся операцию для всех записей (примерно 10 млн), использую стримы по 100к. Задумался над тем, что можно не использовать лимит, и через стрим проганять все записи. Вопрос, блокирует ли стрим с курсором дб на запись?
Oleh Kopyl
Anonymous
Всем привет. Только начал использовать mongoDB , создал cluster в Atlas и запустил. И появляется такая ошибка. ПомогитИ)
Vladislav
Viktar
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
есть кто живой?
Pavlo
Viktar
Вы пытаетесь использовать могу как реляционную базу данных. Это немного не правильно. Монга плохо умеет джойнить. Посмотрите aggregate и lookup.
Vladislav
Vova
@yatoba @dd_bb
Pythonic
Я же правильно понимаю, milti-document transactions уже доступно и для одного инстанса монги?
Pythonic
У меня появилось проблема.
Надо обновить несколько атрибутов данных в одном документе, и это реализовать в рамках транзакции. Я могу это реализовать в рамках транзакции монги?
Или придется реализовать это в коде на уровне аппки?
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'},
Подскажите как это сделать?
yopp
Коллеги. Подскажите пожалуйста как удалить элемент массива по его индексу?
user: {
items: [
{count: 10, code: 'Jkdoof'},
{count: 20, code: 'Fdege'},
{count: 30, code: 'Cvvefg'},
{count: 40, code: 'Wkrrc'},
]
};
Вот мне нужно удалить в массиве items элемент с индексом 2
{count: 30, code: 'Cvvefg'},
Подскажите как это сделать?
Если мне память не изменяет то $unset: {"user.items.2": 1}
yopp
yopp
С точки зрения безопасности вариант не изменять состояние базы данных промежуточными результатами наиболее корректно.
Но если реализация проще, то почему бы и нет. Конвертните ваш инстанс в реплику и оберните логику в транзакцию.
Vladyslav
Делал кто partial search для монго не используя Regex?
Pavel
Добрый день, кто нибудь сталкивался? монга запущена, а компас не подключатеся