Ich möchte eines meiner Felder als Primärschlüssel festlegen . Ich benutze MongoDB als mein NoSQL.
Antworten:
_id
Feld ist für den Primärschlüssel in Mongodb reserviert, und das sollte ein eindeutiger Wert sein. Wenn Sie nichts festlegen, wird _id
es automatisch mit "MongoDB Id Object" gefüllt. Sie können jedoch alle eindeutigen Informationen in dieses Feld eingeben.
Zusätzliche Informationen: http://www.mongodb.org/display/DOCS/BSON
Ich hoffe es hilft.
Die andere Möglichkeit besteht darin, Indexes
für Ihre Sammlung zu erstellen und sicherzustellen, dass sie einzigartig sind.
Weitere Informationen finden Sie unter folgendem Link
Ich finde das eigentlich ziemlich einfach und leicht zu implementieren.
In mongodb _id ist das Feld für den Primärschlüssel reserviert. Mongodb verwendet einen internen ObjectId-Wert, wenn Sie ihn nicht in Ihrem Objekt definieren, und erstellt außerdem einen Index, um die Leistung sicherzustellen.
Sie können jedoch Ihren eigenen Wert für _id festlegen, und Mongodb verwendet ihn, anstatt einen für Sie zu erstellen. Und selbst wenn Sie mehrere Felder als Primärschlüssel verwenden möchten, können Sie ein Objekt verwenden:
{ _id : { a : 1, b: 1} }
Achten Sie beim Erstellen dieser IDs nur darauf, dass die Reihenfolge der Schlüssel (im Beispiel a und b) von Bedeutung ist. Wenn Sie sie vertauschen, wird dies als ein anderes Objekt betrachtet.
Wenn Sie wie RDBMS denken, können Sie keinen Primärschlüssel erstellen. Der Standardprimärschlüssel ist _id. Sie können jedoch einen eindeutigen Index erstellen . Beispiel ist unten.
db.members.createIndex( { "user_id": 1 }, { unique: true } )
db.members.insert({'user_id':1,'name':'nanhe'})
db.members.insert({'name':'kumar'})
db.members.find();
Die Ausgabe ist unten.
{"_id": ObjectId ("577f9cecd71d71fa1fb6f43a"), "user_id": 1, "name": "nanhe"}
{"_id": ObjectId ("577f9d02d71d71fa1fb6f43b"), "name": "kumar"}
Wenn Sie versuchen, dieselbe user_id einzufügen, löst mongodb einen Schreibfehler aus.
db.members.insert({'user_id':1,'name':'aarush'})
WriteResult ({"nInserted": 0, "writeError": {"code": 11000, "errmsg": "E11000-Fehlererfassung für doppelte Schlüssel: student.members index: user_id_1 dup key: {: 1.0}"}})
Einfach können Sie verwenden
db.collectionName.createIndex({urfield:1},{unique:true});
Eine Möglichkeit, dieses Verhalten zu erreichen, besteht darin, den Wert auf _id
das Feld (das in MongoDB für einen Primärschlüssel reserviert ist) zu setzen, basierend auf den benutzerdefinierten Feldern, die Sie als Primärschlüssel behandeln möchten.
dh wenn ich employee_id
als Primärschlüssel möchte, dann zum Zeitpunkt der Erstellung des Dokuments in MongoDB; Weisen Sie den _id
gleichen Wert wie den von zu employee_id
.
Dies ist die Syntax zum Erstellen des Primärschlüssels
db. <sammlung> .createIndex (<Schlüssel- und Indextypspezifikation>, {unique: true})
Nehmen wir an, unsere Datenbank hat eine Sammlung mit dem Namen student und das Dokument hat den Schlüssel student_id, den wir benötigen, um einen Primärschlüssel zu erstellen . Dann sollte der Befehl wie folgt sein.
db.student.createIndex({student_id:1},{unique:true})
Sie können überprüfen, ob diese student_id als Primärschlüssel festgelegt wurde, indem Sie versuchen, der Schülersammlung einen doppelten Wert hinzuzufügen .
Bevorzugen Sie dieses Dokument für weitere Informationen https://docs.mongodb.com/manual/core/index-unique/#create-a-unique-index
http://docs.mongodb.org/manual/tutorial/create-an-auto-incrementing-field/
Sie können diesen Link auch überprüfen und das _id
Feld automatisch inkrementieren .
how to set one of my fields as primary key
, zum Beispiel: Ich möchte user_email als Schlüssel in Benutzersammlungen, aber wie man dieses Feld als Schlüssel und eindeutig