MongoDB zusammengesetzter Schlüssel
Bin ich gerade erste Schritte mit MongoDb und ich habe bemerkt, dass ich bekommen eine Menge von doppelten Datensätzen die Einträge, die ich meinte, einzigartig zu sein. Ich würde gerne wissen, wie man verwenden Sie einen zusammengesetzten Schlüssel für meine Daten und ich bin auf der Suche nach Informationen, wie Sie diese erzeugen. Schließlich bin ich mir mit Java-Zugriff auf mongo und morphia als mein ORM-Schicht, so auch diejenigen in Ihren Antworten wäre genial.
Morphia: http://code.google.com/p/morphia/
InformationsquelleAutor der Frage Paul Gregoire | 2011-08-28
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie Objekte für das _id Feld. Das _id Feld ist immer einzigartig. So dass Sie Art bekommen Sie einen zusammengesetzten Primärschlüssel:
Nur vorsichtig sein, beim erstellen dieser ids, die die Reihenfolge der Tasten (a und b im Beispiel) ist wichtig, wenn Sie tauschen Sie um, wird es als ein anderes Objekt.
Die andere Möglichkeit ist, zu verlassen _id allein und erstellen Sie einen eindeutigen zusammengesetzten index.
https://docs.mongodb.org/v3.0/reference/method/db.collection.ensureIndex/
InformationsquelleAutor der Antwort Thilo
Können Sie erstellen Eindeutige Indizes auf die Felder des Dokuments, das Sie wollen, um zu testen, Einzigartigkeit auf. Sie können composite (sogenannte compound-key Indizes in MongoDB land), wie Sie sehen können aus der Dokumentation. Morphia hat eine
@Indexed
annotation zur Unterstützung der Indizierung in der Feldebene. Zusätzlich mit morphia, die Sie definieren können zusammengesetzte Schlüssel in der Klasse mit der@Indexed
annotation.InformationsquelleAutor der Antwort lobster1234
Mir ist gerade aufgefallen, dass die Frage markiert, wie "java", so würden Sie wollen, etwas zu tun:
Benutze ich Morphia auch, aber gefunden haben (und funktioniert), die es erzeugt viele Fehler, als Sie versucht, marshall zu den zusammengesetzten Schlüssel. Ich benutze die oben bei der Abfrage um diese Fehler zu vermeiden.
Mein original-code (der auch funktioniert):
Meine ProbId Klasse ist annotiert als
@Entity(noClassnameStored = true)
und innerhalb der Wahrscheinlichkeiten Klasse, das id-Feld ist@Id ProbId id;
InformationsquelleAutor der Antwort Nic Cottrell