Ich möchte eines meiner Felder als Primärschlüssel festlegen . Ich benutze MongoDB als mein NoSQL.
78
_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.
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 eindeutigDie 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.
quelle
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.
quelle
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}"}})
quelle
Einfach können Sie verwenden
db.collectionName.createIndex({urfield:1},{unique:true});
quelle
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 zuemployee_id
.quelle
Dies ist die Syntax zum Erstellen des Primärschlüssels
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
quelle
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 .quelle
Wenn Sie Mongo auf Meteor verwenden, können Sie Folgendes verwenden
_ensureIndex
:CollectionName._ensureIndex({field:1 }, {unique: true});
quelle