#mongodb #mongoose
#mongodb #mongoose
Вопрос:
я пытаюсь найти документацию о том, как контролировать или ограничивать размер поля в mongodb.
У меня есть схема, в которой есть поле типа string, и я хотел бы ограничить размер.
Иногда пользователи вставляют большие описания, и я хотел бы контролировать размер.
Есть ли какой-либо метод, когда я объявляю схему, чтобы установить максимальный размер или что-то в этом роде? заранее спасибо
Ответ №1:
//actual code out from mongo 4.2 shell/"command line interface" on windows
//create a collection emp and name as one of the fields. Use schema validation to limit //name size during schema creation
> db.createCollection("emp",{
... validator:{
... $jsonSchema:{
... bsonType:"object",
... properties:{
... name:{
... bsonType: "string",
... description: "must be string",
... maxLength: 10
... }
... }
... }
... }
... }
... );
{ "ok" : 1 }
//insert sample document for name greater than lenght say 10 characters.
//it fails
> db.emp.insert({name:"kasjdfdj abcdeefghijddfldkjslfj"});
WriteResult({
"nInserted" : 0,
"writeError" : {
"code" : 121,
"errmsg" : "Document failed validation"
}
})
//insert document for name less than 10, it passes through
> db.emp.insert({name:"john doe"});
WriteResult({ "nInserted" : 1 })
//table level validation
> db.emp.find();
{ "_id" : ObjectId("5f5fa20fbc3501568e2ee9f0"), "name" : "john doe" }
>
Комментарии:
1. Кажется, это работает, но знаете ли вы, как выполнить эту проверку с помощью схемы mongoose?
2. @sergioCano, извините. У меня нет знаний о mongoose. Я думаю, что это какой-то модулятор запросов поверх MongoDB.
3. спасибо за ваш ответ, в mongoose есть что-то похожее, есть несколько валидаторов, я думаю, этого ответа достаточно, чтобы понять, как работают валидаторы.
Ответ №2:
В Mongoose есть несколько встроенных валидаторов. Для строки он имеет валидаторы enum, match, minlength и maxlength. Похоже, что максимальная длина — это то, что вам нужно.
Вы можете прочитать больше о встроенных валидаторах mongoose здесь.