2 Stimmen

Erzeugung einer neuen _id-Generierung in eingebetteten MongoDB-Dokumenten erzwingen

Ich arbeite mit ASP.NET MVC 3, C# und MongoDB. Ich habe ein Modell mit eingebetteten Dokumenten, aber ich möchte automatisch eine neue _id für jedes meiner eingebetteten Dokumente generieren lassen.

Das kann ich im Code machen und setzen

Model._id = ObjectId.GenerateNewId();

Aber ich würde es bevorzugen, wenn ich mich nicht darum kümmern müsste und MongoDB die neue _id für jedes eingebettete Dokument automatisch generieren würde.

Ich möchte diese eingebetteten Dokumente nicht in eine neue Sammlung auslagern, sie gehören hierher, aber ich hätte gerne eine eindeutige ID für sie.

2voto

Gates VP Punkte 44457

Der einzige ObjectId, den MongoDB "automatisch generiert", ist derjenige, den es für den Primärschlüssel verwendet: _id.

Wenn Sie ein Dokument speichern, weiß MongoDB im Grunde nichts über "Schema" oder "eingebettete" Dokumente oder "Arrays von Unterdatensätzen". Es gibt keine Typüberprüfung oder Schemavalidierung, daher gibt es keine Möglichkeit, die Instantiierung der eingebetteten IDs zu erzwingen.

Ihre beste Option ist, es im Elternklasse zu verpacken. Wenn diese eingebetteten Dokumente eine bestimmte Klasse mit ihnen verbunden haben, können Sie das GenerateNewId() in diesem Konstruktor platzieren.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X