2013-01-02 8 views
9

Ich habe ein Feld in einer Entität, die vorhanden sein muss, aber nicht unbedingt eindeutig. Gibt es eine Möglichkeit, diese Einschränkung in Mongo zu erzwingen?Wie erstellt man einen Mongo-Index, um sicherzustellen, dass ein Feld niemals null/abwesend/leer ist?

Ich verstehe, dass Mongo-Sammlungen schemaless sind und das einzige Schema, das eine Sammlung haben kann, das Indexschema ist. Aber ich sehe nicht, ob es eine Index-Option ist ein Feldwert, um sicherzustellen, nicht leer ist, wo ein leeres Feld Wert erfüllt den folgenden JavaScript-Ausdruck:

!value && value !== 0 && value !== false 

Antwort

6

Nur auf dem UNIQUE-Index, können Sie Art von Mock Dies. Sie können ein Dokument mit einem Eintrag erstellen, bei dem das Feld/Wert fehlt und das Dokument mit dem NULL-Wert im Index erstellt wird und KEINE weiteren fehlenden Werte zulassen.

Da Ihre Anforderung für einen nicht eindeutigen Schlüssel ist, glaube ich nicht, dass Sie an dieser Stelle in MONGODB (v2.2) eine Option haben, um sicherzustellen, dass die Werte in der indizierten Spalte vorhanden sein müssen.

+3

Ab V3.2 ist dies jetzt möglich. Für weitere Informationen siehe: https://docs.mongodb.com/manual/core/document-validation/ – pokkie

3

In mongodb kann nur das Feld _id Ihre Anforderung erfüllen. Die Indizierung scheint für dieses Problem keine gute Idee zu sein (und auch keine machbare).

Ich denke, dass Sie diese Regel in der Einfügung und Aktualisierung in Ihrer App erzwingen müssen, anstatt mongodb darum zu bitten, es für Sie anzusehen.

Verwandte Themen