Mongoose eindeutiger Index für Filialdokumente

7

Nehmen wir an, ich habe ein einfaches Schema:

%Vor%

Stellen wir nun sicher, dass Paare ( _id , map._id ) eindeutig sind.

%Vor%

Schnellcheck mit db.test.getIndexes() zeigt, dass es erstellt wurde.

%Vor%

Das Problem ist, dass dieser Index ignoriert wird und ich einfach mehrere Filialdokumente mit demselben map._id erstellen kann. Ich kann die folgende Abfrage einfach mehrmals ausführen:

%Vor%

und am Ende folgt:

%Vor%

Was ist hier los? Warum kann ich widersprüchliche Filialdokumente verschieben?

    
Sebastian Nowak 18.09.2014, 14:07
quelle

3 Antworten

15

Lange Rede, kurzer Sinn: Mongo unterstützt keine eindeutigen Indizes für Filialdokumente, obwohl es erlaubt, sie zu erstellen ...

    
Sebastian Nowak 19.11.2014, 14:23
quelle
11

Das kommt in Google vor, also dachte ich mir, ich würde eine Alternative zur Verwendung eines Indexes hinzufügen, um eine eindeutige Schlüsseleinschränkung wie Funktionalität in Filialdokumenten zu erreichen, hoffe, das ist in Ordnung.

Ich bin mit Mongoose nicht sehr vertraut, also ist es nur ein Mongo-Konsolen-Update:

%Vor%

Mit Dokumenten wie:

%Vor%

Der Schlüssel ist, dass Sie sicherstellen, dass das Update ein zu aktualisierendes Dokument (d. h. den Findeteil) nicht zurückgibt, wenn Ihr Filialschlüssel bereits existiert.

    
phuhgh 17.03.2015 15:08
quelle
-3

Die erste Objekt-ID-Länge in Mongodb muss 24 sein. Dann können Sie _id deaktivieren und _id als ID oder andere umbenennen und versuchen, $ addToSet . Viel Glück.

CoffeeScript Beispiel:

%Vor%     
meepo 18.11.2014 01:25
quelle

Tags und Links