2
的MongoDB允許在一個關鍵的指標嵌入文檔的內部:mongoengine - 嵌入式文檔中的關鍵字索引?
db.things.ensureIndex({"address.city": 1})
有沒有辦法做到這一點使用mongoengine?
的MongoDB允許在一個關鍵的指標嵌入文檔的內部:mongoengine - 嵌入式文檔中的關鍵字索引?
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" })
class Nested(EmbeddedDocument):
a = StringField(unique=True)
b = StringField()
class Outer(Document):
inner = EmbeddedDocumentField(Nested)
c = StringField()
meta = {"indexes": ['inner.a']}
這就是全部。
你試過了嗎?在mongoengine中有一個ensure_index函數 – DrDee
@DrDee我試圖在模式中強制執行此操作。我可以使用unique = True這個參數在任何領域做到這一點,但是嵌入式領域中的關鍵點呢? – mattexx