Vladimir
Антон
как можно задать таймаут для сессии? т.е. если нет запросов n времени, то рвем сессию. нашел параметр maxIdleTimeMS, но ругается Error: maxIdleTimeMS not supported
yopp
Антон
есть nodejs скрипт, который с какой то периодичностью не рвет соединение с базой. хочу временно это решить заданием таймаута в настройке коннекта с базой
yopp
https://docs.mongodb.com/manual/reference/connection-string/#connection-pool-options
yopp
скорее всего вы ищите maxIdleTimeMS
yopp
но нет никакого особого смысла закрывать соединения
Anonymous
Всем привет. Я совсем зеленый в Mongo. Смотрю доку по установке MongoDb в ubuntu.
Вот здесь есть рекомендация - https://docs.mongodb.com/manual/tutorial/install-mongodb-on-ubuntu/#create-a-list-file-for-mongodb
создать файл mongodb-org-4.4.list, руками?
И ещё, скажите пожалуйста, как вообще происходит процесс обновления версии Mongo? Почему имя файла жестко привязано к версии? Где об этом прочесть (если долго самому излагать)
Спасибо.
Vened
Это добавление в операционную систему репозитория, из которого будет ставиться новая версия.
>создать файл mongodb-org-4.4.list, руками?
читайте внимательнее. там ведь даже консольная команда приводится, которой его можно создать - просто скопируйте и выполните
Vened
Anonymous
Denis
Denis
рекомендуется если возможно располагать поля в индексе в порядке Equality Sort Range, а $in с точки зрения монги это Range или Equality? $nin все таки Range как я понимаю
yopp
Denis
$in это $or
а $or Range?)) Просто Range в моем понимании $gt и тд, тут явно рейндж скан
а $or вроде и не Equality совсем, а какой то multi equality
yopp
Не понимаю что вы имеете ввиду под этими терминами
Denis
Не понимаю что вы имеете ввиду под этими терминами
абзац follow the ESR rule
https://www.mongodb.com/blog/post/performance-best-practices-indexing
https://www.alexbevi.com/blog/2020/05/16/optimizing-mongodb-compound-indexes-the-equality-sort-range-esr-rule/
yopp
А, окей, это по query boundaries. $or это логическая операция, это не операция сравнения.
$in / $nin проще рассматривать как синтаксический сахар над $or: [ {a: 1}, {$or: [{a: 2}]} ]
yopp
Сам по себе $or не определяет query boundary, так как у вас там действительно внутри может быть gt(e)/lt(e)
yopp
Я сходу не помню как в итоге boundary для $in выглдяит, можете в explain посмотреть
Denis
спасибо )
Viktar
yopp
от запроса и настроения планировщика
Viktar
)) кстати монга собирает статистику по коллекциям?
yopp
Какого рода?
Viktar
Сколько записей. Какие. Это позволяет оптимизатору выбирать план запроса. Так работает в Sql server
Александр
читая https://www.mongodb.com/blog/post/performance-best-practices-indexing эту статью, наткнулся на следующее:
Regular indexes are useful for matching the entire value of a field. If you only want to match on a specific word in a field with a lot of text, then use a text index.
If you are running MongoDB in the Atlas service, consider using Atlas Full Text Search which provides a fully-managed Lucene index integrated with the MongoDB database. FTS provides higher performance and greater flexibility to filter, rank, and sort through your database to quickly surface the most relevant results to your users.
Александр
я правильно понимаю что если я хочу нормальный FTS, то self-hosted монга не подойдёт?
Joe
Joe
yopp
Александр
Али
Привет ребят, помогите плс.
Как обновить поле внутри объекта в записи?
Я использую $set, оно перезаписывает поле.
Влад
$set: {
'account.balance': 5
}
Али
Спасибо большое
Roman
Подскажите такой вопрос, в колекции есть поле типа массив, [{customerId: 1, position: '111'}, {customerId: 2, position: '222'}]. Мне нужно изменить ключ position для customerId == 1. Возможно ли это сделать?
Влад
https://docs.mongodb.com/manual/reference/operator/update/positional/#up._S_
Roman
Artem
Как обновить структуру базы, если в ней уже есть документы?
Artem
✙ Nikita
изменить тип поля
хз насколько это по феншую, но я обычно пишу в отедльную папку migrations скрипт который выполняю потом в mongo шелле, к примеру:
db.users.forEach(user => {
user.neeeded_field = parseInt(user.neeeded_field);
db.users.save(user);
});
Artem
Artem
мне нужно Number заменить на [Number]
✙ Nikita
Валидация выполняется на стороне ORM
Artem
а. т.е. я могу изменять документы без валидации?
✙ Nikita
да, ведь если ты сделаешь запрос к бд напрямую - никакая орм валидацию не сделает
✙ Nikita
у тебя база в продакшене какая-то?
✙ Nikita
т.е. активно используется в данный момент?
Artem
Artem
могу выключить прогу вообще
Artem
проблема ток с валидацией
✙ Nikita
тогда можешь выполнить нужный запрос для миграции в самой бд, а потом в исходниках приложения в схеме модели меняешь тип данных
Artem
не подумал прош монгошелл чет
✙ Nikita
и все
Artem
спасибо
Artem
Artem
спасибо
✙ Nikita
"но получаю ошибки при добавлении документов не соотв. формату. "
можно конкретнее какую ошибку?
монга не делает никаких валидаций, монгус для того и был по идеи сделан чтобы кроме четкой схемы была еще валидация
✙ Nikita
либо я что то не понимаю в этой "теории" монги
DM✴︎
Добрый день. Кто-нибудь сталкивался с WARNING: the collection 'collection' lacks a unique index on _id? Даст монго пересоздать этот индекс?
Влад
✙ Nikita
✙ Nikita
не знал что они с 3.2 добавили валидацию
✙ Nikita
тогда отбой
✙ Nikita
https://www.mongodb.com/blog/post/document-validation-part-1-adding-just-the-right-amount-of-control-over-your-documents
✙ Nikita
какие то странные команды
db.runCommand({
collMod: "contacts",
validator:
{$or: [{version: {"$exists": false}},
{version: 1,
$and: [{Name: {"$exists": true}}]
},
{version: 2,
$and: [{Name: {"$exists": true, "$type": 2}}]
}
]
}
})
Влад
вечерком почитаю) но на интуитивном уровне все ясно
✙ Nikita
Влад
нет, нативный драйвер
Влад
return db.command({
collMod: key,
validator: {
$jsonSchema: fastify.Schema.Collection[key],
},
});
Влад
я такие же финты ушами делаю)
✙ Nikita
ну короче тогда получается что тебе нужно изменять перед миграцией еще и сами валидаторы в бд