如何在Python中使一组组合字段在Mongodb中唯一

2024-10-01 09:21:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我想创建一个表,其中两个字段组合在一起形成一个索引字段。创建表的Python代码如下。我要做的是使组合字段course_namegroup_name唯一,这样就不会创建具有相同course_name和{}的两个组。有人能帮我吗?在

class SocialGroup(Document):
    timestamp = DateTimeField(default=datetime.now)
    course_name = StringField()
    group_name = StringField(choices=[('A', 1), ('B', 1), ('C', 1),('D', 1), ('E', 1), ('F', 1), ('None',1)], default="None")

Tags: 代码namenonedefaultdatetimegroupdocumentnow
2条回答

发件人:http://docs.mongoengine.org/guide/defining-documents.html#uniqueness-constraints

You may also specify multi-field uniqueness constraints by using unique_with, which may be either a single field name, or a list or tuple of field names

在您的情况下:

class SocialGroup(Document):
    timestamp = DateTimeField(default=datetime.now)
    course_name = StringField()
    group_name = StringField(choices=[('A', 1), ('B', 1), ('C', 1),('D', 1), ('E', 1), ('F', 1), ('None',1)], default="None",
                             unique_with='course_name')

或者更复杂:

^{pr2}$

您可以在类的metadict中指定indexes

class SocialGroup(Document):
    timestamp = DateTimeField(default=datetime.now)
    course_name = StringField()
    group_name = StringField(choices=[('A', 1), ('B', 1), ('C', 1),('D', 1), ('E', 1), ('F', 1), ('None',1)], default="None")
    meta = {
        'indexes': [
            {'fields': ('course_name', 'group_name'), 'unique': True}
        ]
    }

相关问题 更多 >