Mongodb 使用mongoose控制字符串字段的大小

Mongodb 使用mongoose控制字符串字段的大小,mongodb,mongoose,Mongodb,Mongoose,我试图找到有关如何控制或限制mongodb中字段大小的文档 我有一个模式,其中有一个字符串类型的字段,我想限制大小 有时用户插入大的描述,我想控制大小 当我声明模式以设置最大大小或其他值时,是否有任何方法?提前感谢Mongoose有几个内置的验证器。对于字符串,它有enum、match、minlength和maxlength验证器。看起来maxlength是您需要的 //actual code out from mongo 4.2 shell/"command line interfa

我试图找到有关如何控制或限制mongodb中字段大小的文档

我有一个模式,其中有一个字符串类型的字段,我想限制大小

有时用户插入大的描述,我想控制大小


当我声明模式以设置最大大小或其他值时,是否有任何方法?提前感谢

Mongoose有几个内置的验证器。对于字符串,它有enum、match、minlength和maxlength验证器。看起来maxlength是您需要的

//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" }
>

您可以阅读更多关于mongoose内置验证器的信息。

mongoose有几个内置验证器。对于字符串,它有enum、match、minlength和maxlength验证器。看起来maxlength是您需要的


您可以阅读更多关于mongoose内置验证器的信息。

这似乎可行,但您知道如何使用mongoose模式进行验证吗?@sergioCano,对不起。我对猫鼬一无所知。我认为这是MongoDB之上的一种查询建模工具。谢谢你的回答,在mongoose中也有类似的东西,有一些验证器。我认为这个答案足以理解验证器是如何工作的。它似乎可以工作,但你知道如何用mongoose模式进行验证吗?@sergioCano,对不起。我对猫鼬一无所知。我认为这是MongoDB之上的一种查询建模工具。感谢您的回答,在mongoose中,有一些类似的验证器,我认为这个答案足以理解验证器是如何工作的。