如何在列表中的嵌入文档中指定一个全局唯一的字段

时间:2013-01-04 22:29:03

标签: python mongodb pymongo mongoengine

我想创建一个嵌入式文档列表,并且每个嵌入式文档中的特定字段不仅在列表中是唯一的,而且在整个集合中的所有列表中都是唯一的。

所以我这样做了:

class User(Document):
    emails = ListField(EmbeddedDocumentField(Email))

class Email(EmbeddedDocument):
    email = StringField(unique=True) # This doesn't work!
    verified = BooleanField(default=False)

这只是不起作用,我仍然可以向同一个用户或用户添加重复的邮件!
请帮助,谢谢。

1 个答案:

答案 0 :(得分:0)

MongoDB索引的唯一性是针对每个文档强制执行的,而不是针对数组中的每个元素强制执行的。如果要强制执行该操作,则必须将这些文档拆分为单独的集合。