如何在 mongodb 中设置集合索引的最大长度
How to set a max length on collection index in mongodb
在我的 mongodb
数据库中使用 Pymongo
到 set/query/insert。
可以在mongodb中指示一个值应该是唯一索引。
db.mycoll.create_index("sid", unique=True) # This is what I have so far
现在,我想确保索引具有 最小和最大长度 。 (3-20 个字符)。
我没有找到任何关于添加长度限制的信息,mongodb 可以吗?
我希望是这样的:
db.mycoll.create_index("sid", unique=True, max_len=20, min_len=3) # Is there a way to do this ?
如果您需要更多上下文,我在 mongodb 中有一个集合,对于每个文档,我需要一个 SID
(字符串 ID)。我想对这个值设置一个技术大小限制,这样我就可以确定在我的应用程序的每一面,任何与这个大小不匹配的字符串都不是正确的 id。
非常感谢
您可以使用MongoDB Schema Validation来指定字符串类型字段的最大和最小长度。例如,
db.createCollection("mycoll", {
validator: {
$jsonSchema: {
bsonType: "object",
required: [ "name", "city" ],
properties: {
name: {
bsonType: "string",
minLength: 3,
maxLength: 20,
description: "must be a string (3 to 20 chars) and is required"
},
city: {
bsonType: "string"
}
}
}
}
} )
createCollection
方法有 validator
选项,您可以在其中指定 $jsonSchema 以匹配架构中的文档。此外,您可以为验证器指定 validationAction
(默认为“错误”)和 validationLevel
(默认为“严格”)。
这意味着,如果您尝试以下插入操作,它将失败。将不会插入文档,因为 name
字段的长度只有 2 个字符。
db.mycoll.insertOne({name: 'mo', city: 'los angeles' })
注意:
- 您仍然需要在
name
字段上创建一个唯一索引,以确保它不允许重复值。
- 模式验证应用于数据库服务器 - 就像唯一索引一样。
[编辑添加]
PyMongo 版本:
client = pymongo.MongoClient()
db = client['test']
db.create_collection('pycoll', validator={
'$jsonSchema': {
'bsonType': 'object',
'required': [ 'name' ],
'properties': {
'name': {
'bsonType': 'string',
'minLength': 3,
'maxLength': 20,
'description': 'must be a string (3 to 20 chars) and is required'
}
}
}
}
)
print('Collection created...')
在我的 mongodb
数据库中使用 Pymongo
到 set/query/insert。
可以在mongodb中指示一个值应该是唯一索引。
db.mycoll.create_index("sid", unique=True) # This is what I have so far
现在,我想确保索引具有 最小和最大长度 。 (3-20 个字符)。
我没有找到任何关于添加长度限制的信息,mongodb 可以吗?
我希望是这样的:
db.mycoll.create_index("sid", unique=True, max_len=20, min_len=3) # Is there a way to do this ?
如果您需要更多上下文,我在 mongodb 中有一个集合,对于每个文档,我需要一个 SID
(字符串 ID)。我想对这个值设置一个技术大小限制,这样我就可以确定在我的应用程序的每一面,任何与这个大小不匹配的字符串都不是正确的 id。
非常感谢
您可以使用MongoDB Schema Validation来指定字符串类型字段的最大和最小长度。例如,
db.createCollection("mycoll", {
validator: {
$jsonSchema: {
bsonType: "object",
required: [ "name", "city" ],
properties: {
name: {
bsonType: "string",
minLength: 3,
maxLength: 20,
description: "must be a string (3 to 20 chars) and is required"
},
city: {
bsonType: "string"
}
}
}
}
} )
createCollection
方法有 validator
选项,您可以在其中指定 $jsonSchema 以匹配架构中的文档。此外,您可以为验证器指定 validationAction
(默认为“错误”)和 validationLevel
(默认为“严格”)。
这意味着,如果您尝试以下插入操作,它将失败。将不会插入文档,因为 name
字段的长度只有 2 个字符。
db.mycoll.insertOne({name: 'mo', city: 'los angeles' })
注意:
- 您仍然需要在
name
字段上创建一个唯一索引,以确保它不允许重复值。 - 模式验证应用于数据库服务器 - 就像唯一索引一样。
[编辑添加] PyMongo 版本:
client = pymongo.MongoClient()
db = client['test']
db.create_collection('pycoll', validator={
'$jsonSchema': {
'bsonType': 'object',
'required': [ 'name' ],
'properties': {
'name': {
'bsonType': 'string',
'minLength': 3,
'maxLength': 20,
'description': 'must be a string (3 to 20 chars) and is required'
}
}
}
}
)
print('Collection created...')