J'essaie de trouver de la documentation sur la façon de contrôler ou de limiter la taille d'un champ dans mongodb.

J'ai un schéma qui a un champ qui est de type string et je voudrais limiter la taille.

Parfois, les utilisateurs insèrent de grandes descriptions et je voudrais contrôler la taille.

Existe-t-il une méthode lorsque je déclare le schéma pour définir une taille maximale ou quelque chose? Merci d'avance

0
Sergio Cano 14 sept. 2020 à 16:31

2 réponses

Meilleure réponse
//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
Mallik 14 sept. 2020 à 17:07

Mongoose a plusieurs validateurs intégrés. Pour String, il a des validateurs enum , match , minlength et maxlength . On dirait que maxlength est ce dont vous avez besoin.

Pour en savoir plus sur les validateurs intégrés de mangouste, cliquez ici.

1
Cuong Le Ngoc 15 sept. 2020 à 07:03