Fügen Sie zuerst einen eindeutigen Index zum Feld 'items.barcode'
hinzu.Hinzufügen eines eindeutigen Index zu einem Array-Typ-Feld beim Einbetten von Dokumenten von MongoDB
db.clothes.createIndex({'items.barcode': 1}, {unique: 1});
Dann legen Sie einige Dokumente an die clothes
Tabelle.
db.clothes1.remove({});
db.clothes.insert([
{ // success
_id: '1',
items: [
{barcode: ['122', '122']},
{barcode: ['122', '124']}
]
},
{ // success
_id: '2',
items: [
{barcode: ['222', '223']},
{barcode: ['224', '225']}
]
},
{ // failed
_id: '3',
items: [
{barcode: ['122', '323']},
{barcode: ['324', '325']}
]
}
]);
Jetzt können wir das dritte Dokument eingefügt ist fehlgeschlagen, verursachen den Fehler sehen:
'E11000 duplicate key error index: duolayimeng.clothes1.$items.barcode_1 dup key: { : "122" }'
Aber in den beiden einbetten Dokumente des ersten Dokuments, gibt es drei Elemente 'barcode'
Feld sind '122'
.
Ich bin verwirrt über diese Situation. Wie MongoDB entscheidet, ein Array-Typ Feld in Dokumente einbetten, wie 'items.barcode'
, ist einzigartig oder nicht?