In MongoDB können Sie den $push
verwenden Operator, um einen Wert an ein Array anzuhängen.
Dieser Operator kann mit verschiedenen Modifikatoren verwendet werden, einer davon ist $position
Modifikator. Die $position
Mit dem Modifikator können Sie die Position innerhalb des Arrays angeben, an der Sie den neuen Wert einfügen möchten.
Wert am Anfang des Arrays hinzufügen
Angenommen, wir haben die folgende Sammlung:
{ "_id" :1, "prod" :"Fledermaus", "sizes" :[ "S", "M", "XL" ] }{ "_id" :2, "prod" :"Mütze" , "sizes" :[ "S", "L", "XL" ] }{ "_id" :3, "prod" :"Cap", "sizes" :[ "M", "L" ] }Und nehmen wir an, wir wollen dem Anfang des Arrays in Dokument 3 einen Wert hinzufügen.
Wir können dies tun:
db.products.update( { _id: 3 }, { $push: { sizes: { $each: [ "S" ], $position: 0 } } } )
Lassen Sie uns nun die Sammlung erneut überprüfen:
db.products.find()
Ergebnis:
{ "_id" :1, "prod" :"Fledermaus", "sizes" :[ "S", "M", "XL" ] }{ "_id" :2, "prod" :"Mütze" , „Größen“ :[ „S“, „L“, „XL“ ] }{ „_id“ :3, „prod“ :„Cap“, „Größen“ :[ „S“, „M“, „L“ ] }Arrays sind nullbasiert, also
position: 0
fügt den Wert als erstes Element in das Array ein.Fügen Sie der Mitte des Arrays einen Wert hinzu
Angenommen, wir möchten den Wert
M
hinzufügen zu Dokument 2, und wir wollen, dass es zwischenS
liegt undL
.So können wir das tun:
db.products.update( { _id: 2 }, { $push: { sizes: { $each: [ "M" ], $position: 1 } } } )
Lassen Sie uns nun die Sammlung erneut überprüfen:
db.products.find()
Ergebnis:
{ "_id" :1, "prod" :"Fledermaus", "sizes" :[ "S", "M", "XL" ] }{ "_id" :2, "prod" :"Mütze" , "Größen" :[ "S", "M", "L", "XL" ] }{ "_id" :3, "prod" :"Cap", "Größen" :[ "S", "M" , "L" ] }Wir haben
$position: 1
verwendet , denn das ist die Position, die wir wolltenM
zu gehen (d.h. die zweite Position).Negative Werte
Sie können als Position auch einen negativen Wert angeben. Wenn Sie dies tun, wird der Wert an der angegebenen negativen Position eingefügt, wobei vom Ende rückwärts gezählt wird.
Angenommen, wir möchten
L
einfügen dazwischenM
undXL
in Dokument 1.So gehen wir mit einer negativen Position vor:
db.products.update( { _id: 1 }, { $push: { sizes: { $each: [ "L" ], $position: -1 } } } )
Überprüfen Sie das Ergebnis:
db.products.find()
Ergebnis:
{ "_id" :1, "prod" :"Fledermaus", "sizes" :[ "S", "M", "L", "XL" ] }{ "_id" :2, "prod" :„Mütze“, „Größen“ :[ „S“, „M“, „L“, „XL“ ] }{ „_id“ :3, „prod“ :„Mütze“, „Größen“ :[ „S“ , "M", "L" ] }Bei negativer Indexposition, wenn Sie mehrere Elemente im
$each
angeben Array, das zuletzt hinzugefügte Element befindet sich an der angegebenen Position vom Ende.