Контролирует размер строкового поля с помощью mongoose

#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 здесь.