Я использую mongodb
с PyMongo
, и я хотел бы отделить определение схемы от остальной части приложения. У меня есть файл user_schema.json
со схемой для user
коллекции:
{
"collMod": "user",
"validator": {
"$jsonSchema": {
"bsonType": "object",
"required": ["name"],
"properties": {
"name": {
"bsonType": "string"
}
}
}
}
}
Затем в db.py
:
with open("user_schema.json", "r") as coll:
data = OrderedDict(json.loads(coll.read())) # Read JSON schema.
name = data["collMod"] # Get name of collection.
db.create_collection(name) # Create collection.
db.command(data) # Add validation to the collection.
Есть ли способ добавить уникальный индекс к name
поле в коллекции user
без изменения db.py
(только путем изменения user_schema.json
)? Я знаю, что могу использовать это:
db.user.create_index("name", unique=True)
, однако тогда у меня есть информация о коллекции в двух местах. Я хотел бы, чтобы вся конфигурация коллекции была в файле user_schema.json
. Мне нужно что-то вроде этого:
{
"collMod": "user",
"validator": {
"$jsonSchema": {
...
}
},
"index": {
"name": {
"unique": true
}
}
}