Python mongoengine-对嵌入文档中的键进行索引?
MongoDB允许在嵌入文档内部的键上建立索引:Python mongoengine-对嵌入文档中的键进行索引?,python,mongodb,mongoengine,Python,Mongodb,Mongoengine,MongoDB允许在嵌入文档内部的键上建立索引: db.things.ensureIndex({"address.city": 1}) 有没有办法使用mongoengine执行此操作?您可以使用unique=True在嵌入式文档上指定一个字段: >>> class Nested(EmbeddedDocument): ... a = StringField(unique=True) ... b = StringField() ... >>>
db.things.ensureIndex({"address.city": 1})
有没有办法使用mongoengine执行此操作?您可以使用
unique=True
在嵌入式文档上指定一个字段:
>>> class Nested(EmbeddedDocument):
... a = StringField(unique=True)
... b = StringField()
...
>>> class Outer(Document):
... inner = EmbeddedDocumentField(Nested)
... c = StringField()
...
>>> o = Outer()
>>> o.c = 'abc'
>>> o.inner = Nested(a='a', b='b')
>>> o.save()
>>> o2 = Outer()
>>> o2.c = 'abc'
>>> o2.inner = Nested(a='a', b='B')
>>> o2.save()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "mongoengine/document.py", line 176, in save
raise OperationError(message % unicode(err))
mongoengine.queryset.OperationError: Tried to save duplicate unique keys (E11000 duplicate key error index: test.outer.$inner.a_1 dup key: { : "a" })
类嵌套(EmbeddedDocument):
... a=字符串字段(唯一=真)
... b=StringField()
...
>>>类别(文件):
... 内部=嵌入的文档字段(嵌套)
... c=StringField()
...
>>>o=外部()
>>>o.c=‘abc’
>>>o.inner=Nested(a='a',b='b')
>>>o.保存()
>>>o2=外部()
>>>o2.c='abc'
>>>o2.inner=嵌套(a='a',b='b')
>>>o2.save()
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
保存中第176行的文件“mongoengine/document.py”
提升操作错误(消息%unicode(错误))
mongoengine.queryset.OperationError:尝试保存重复的唯一键(E11000重复键错误索引:test.outer.$inner.a_1 dup key:{:“a”})
就这些。你试过了吗?中有一个sure_index函数mongoengine@DrDee我试图在模式中强制执行这一点。我可以使用参数unique=True对任何字段执行此操作,但是嵌入字段中的键呢?
class Nested(EmbeddedDocument):
a = StringField(unique=True)
b = StringField()
class Outer(Document):
inner = EmbeddedDocumentField(Nested)
c = StringField()
meta = {"indexes": ['inner.a']}