Mongodb einsetzen doc ohne _id Feld
Ich bin Neuling auf mongodb.
-
Ich das einfügen muss ein doc ohne das _id Feld generieren automatisch.
-
Ich brauche, um das Feld Tenant_id als einzigartig oder zu ändern müssen die "_id" - Feld, um Tenant_id.
wie es zu tun?
sowas
Tenant
{Tenant_id: 123, Tenant_info: ...}
Du musst angemeldet sein, um einen Kommentar abzugeben.
Standardmäßig alle regulären Kollektionen einfügen automatisch eine _id Feld, wenn es nicht vorhanden ist.
Dieses Verhalten kann jedoch geändert werden, wenn Sie erstellen Sie die Sammlung, indem explizit die autoIndexId parameter auf false.
Dann können Sie einfügen von Dokumenten ohne _id Feld. Aber einige Treiber, wie die javascript (und damit der mongo-Konsole), fügen Sie das _id Feld von selbst. In der mongo-Konsole können Sie dies tun:
Mehr Informationen über die autoIndexId Feld finden Sie in der MongoDB-Dokumentation. Diese Seite ist über den Bedeckten Sammlungen, aber die autoIndexId Bereich üblich ist, sowohl regelmäßige und capped-collections.
Den
_id
Feld ist die Standard-Taste für ein mongo-Dokument, es sei denn, Sie sind mit capped-collections.Es ist ein umutable Feld, die nicht aus einem Dokument Struktur.
Ich würde empfehlen, mit
tennant_id
als_id
statt.Mongodb wird automatisch die " _id "- Feld nur, wenn Sie nicht geben Sie einen Wert für die " _id " - Feld, wenn Sie beim einfügen eines Dokuments. So können Sie nur manuell die _id, wenn Sie fügen Sie das Dokument:
Jede MongoDB-Dokument muss ein eindeutiges Feld "_id" und wenn Sie nicht liefern, dann wird es automatisch für Sie generiert.
Ist es nicht möglich, benennen Sie dieses Feld.
Ihre zwei Auswahlmöglichkeiten sind:
1) ignorieren Sie die generierte _id-Feld und verwenden Sie Ihre eigenen tenant_id Feld (Sie müssen einen eindeutigen index auf das Feld)
oder
2) speichern tenant_id Wert in das _id Feld (und nutzt die Tatsache, dass es bereits einen eindeutigen index hat).
Es gibt keine Möglichkeit zu entfernen, _id Feld in jede mongodb-collections.
Wie, @stephene sagte,ich habe versucht das gleiche, aber iam bekommen eine Fehlermeldung wie diese