Mongodb Einfügen von doc ohne _id Feld

8
___ answer12378549 ___

Mongodb generiert das Feld '_id' nur dann automatisch, wenn Sie beim Einfügen eines Dokuments keinen Wert für das Feld '_id' angeben. Sie können die _id also einfach manuell festlegen, wenn Sie das Dokument einfügen:

%Vor%     
___ answer12384878 ___

Standardmäßig fügen alle regulären Sammlungen automatisch ein _id-Feld ein, wenn es nicht vorhanden ist.

Dieses Verhalten kann jedoch beim Erstellen der Sammlung geändert werden, indem der Parameter autoIndexId explizit auf false gesetzt wird.

%Vor%

Dann können Sie Dokumente ohne _id Feld einfügen. Aber einige Treiber, wie das Javascript (und so die Mongo-Konsole), fügen das Feld _id selbst hinzu. In der Mongo-Konsole können Sie dies tun:

%Vor%

Weitere Informationen zum Feld autoIndexId finden Sie in der MongoDB-Dokumentation . Diese Seite behandelt Capped Collections, das Feld autoIndexId ist jedoch sowohl für reguläre als auch für capped Collections verfügbar.

    
___ answer30908307 ___

Es gibt keine Möglichkeit, _id-Felder in Mongong-Sammlungen zu entfernen. Wie @stephene sagte, habe ich das gleiche versucht, aber ich bekomme Fehler wie folgt

%Vor%     
___ tag123mongodb ___ MongoDB ist eine skalierbare, hochleistungsfähige Open-Source-Dokumenten-orientierte NoSQL-Datenbank. Es unterstützt eine große Anzahl von Sprachen und Anwendungsentwicklungsplattformen. Fragen zur Serververwaltung können unter http://dba.stackexchange.com gestellt werden. ___ answer12378544 ___

Jedes MongoDB-Dokument muss ein eindeutiges Feld "_id" haben und wenn Sie es nicht angeben, wird es automatisch für Sie generiert.

Es ist nicht möglich, dieses Feld umzubenennen.

Ihre zwei Möglichkeiten sind:

1) ignoriere das generierte _id-Feld und benutze dein eigenes tenant_id-Feld (du musst einen eindeutigen Index für dieses Feld hinzufügen) oder 2) Speichern Sie den Wert für tenant_id im _id-Feld (und nutzen Sie die Tatsache, dass es bereits einen eindeutigen Index dafür hat).

    
___ tag123mongodbjava ___ MongoDB ist eine skalierbare, hochleistungsfähige, dokumentenorientierte Open-Source-Datenbank. Dieses Tag wird für Fragen verwendet, die sich auf die Java-Sprachbindungen und -treiber für MongoDB beziehen. ___ tag123mongodbquery ___ Dieses Tag steht für Fragen zum Abfragen und Aktualisieren von MongoDB-Sammlungen, entweder über die "Mongo" -Shell oder mithilfe eines Programmiersprachentreibers. ___ qstnhdr ___ Mongodb Einfügen von doc ohne _id Feld ___ answer12378535 ___

Das Feld %code% ist der Standardschlüssel für ein Mongo-Dokument, es sei denn, Sie verwenden gecappte Sammlungen.

Es ist ein umschaltbares Feld, das nicht aus einer Dokumentstruktur herausgelassen werden kann.

Ich würde stattdessen %code% als %code% empfehlen.

    
___
Ramya 11.09.2012, 21:40
quelle

5 Antworten

22

Standardmäßig fügen alle regulären Sammlungen automatisch ein _id-Feld ein, wenn es nicht vorhanden ist.

Dieses Verhalten kann jedoch beim Erstellen der Sammlung geändert werden, indem der Parameter autoIndexId explizit auf false gesetzt wird.

%Vor%

Dann können Sie Dokumente ohne _id Feld einfügen. Aber einige Treiber, wie das Javascript (und so die Mongo-Konsole), fügen das Feld _id selbst hinzu. In der Mongo-Konsole können Sie dies tun:

%Vor%

Weitere Informationen zum Feld autoIndexId finden Sie in der MongoDB-Dokumentation . Diese Seite behandelt Capped Collections, das Feld autoIndexId ist jedoch sowohl für reguläre als auch für capped Collections verfügbar.

    
Stephane Godbillon 12.09.2012, 09:17
quelle
3

Das Feld _id ist der Standardschlüssel für ein Mongo-Dokument, es sei denn, Sie verwenden gecappte Sammlungen.

Es ist ein umschaltbares Feld, das nicht aus einer Dokumentstruktur herausgelassen werden kann.

Ich würde stattdessen tennant_id als _id empfehlen.

    
Sammaye 11.09.2012 21:59
quelle
3

Mongodb generiert das Feld '_id' nur dann automatisch, wenn Sie beim Einfügen eines Dokuments keinen Wert für das Feld '_id' angeben. Sie können die _id also einfach manuell festlegen, wenn Sie das Dokument einfügen:

%Vor%     
Louisa 11.09.2012 21:59
quelle
2

Jedes MongoDB-Dokument muss ein eindeutiges Feld "_id" haben und wenn Sie es nicht angeben, wird es automatisch für Sie generiert.

Es ist nicht möglich, dieses Feld umzubenennen.

Ihre zwei Möglichkeiten sind:

1) ignoriere das generierte _id-Feld und benutze dein eigenes tenant_id-Feld (du musst einen eindeutigen Index für dieses Feld hinzufügen) oder 2) Speichern Sie den Wert für tenant_id im _id-Feld (und nutzen Sie die Tatsache, dass es bereits einen eindeutigen Index dafür hat).

    
Asya Kamsky 11.09.2012 21:59
quelle
1

Es gibt keine Möglichkeit, _id-Felder in Mongong-Sammlungen zu entfernen. Wie @stephene sagte, habe ich das gleiche versucht, aber ich bekomme Fehler wie folgt

%Vor%     
Jagadeesh 18.06.2015 06:47
quelle