Wenn Sie eine Sammlung von Dokumenten in MongoDB haben, die Arrays enthalten, können Sie diesen Arrays bei Bedarf neue Werte hinzufügen.
Abhängig von Ihren spezifischen Anforderungen können Sie den $push
verwenden -Operator oder $addToSet
Betreiber.
Der $push
Betreiber
Angenommen, wir haben eine Sammlung namens products
mit folgenden Dokumenten:
{ "_id" :1, "product" :"Fledermaus", "sizes" :[ "S", "M", "L" ] }{ "_id" :2, "product" :"Hut" , „Größen“ :[ „S“, „L“, „XL“ ] }{ „_id“ :3, „Produkt“ :„Kappe“, „Größen“ :[ „M“, „L“ ] }Und sagen wir, wir wollen einen Wert an das Array in Dokument 3 anhängen.
Wir können
$push
verwenden in Verbindung mitupdate()
um den Wert anzuhängen:db.products.update( { _id: 3 }, { $push: { sizes: "XL" } } )
Sehen wir uns die Sammlung noch einmal an, um die Änderung zu überprüfen:
db.products.find()
Ergebnis:
{ "_id" :1, "product" :"Fledermaus", "sizes" :[ "S", "M", "L" ] }{ "_id" :2, "product" :"Hut" , „Größen“ :[ „S“, „L“, „XL“ ] }{ „_id“ :3, „Produkt“ :„Kappe“, „Größen“ :[ „M“, „L“, „XL“ ] }Wir können sehen, dass der Wert
XL
wurde dem Array in Dokument 3 hinzugefügt.Der
$push
Der Operator kann auch mit verschiedenen Modifikatoren verwendet werden, wie z. B.$position
,$sort
, und$slice
.Sie können dem Array auch mehrere Werte hinzufügen, indem Sie
$each
verwenden Modifikator.Siehe MongoDB
$push
für Beispiele.Der
$addToSet
BetreiberDas
$addToSet
Der Operator funktioniert ähnlich wie$push
, bis auf ein paar Dinge:
- Wenn der Wert, den Sie hinzufügen möchten, bereits im Array vorhanden ist, wird er nicht hinzugefügt.
- Die
$position
,$sort
, und$slice
Modifikatoren können nicht mit$addToSet
verwendet werden .
Angenommen, unsere Sammlung sieht so aus:
{ "_id" :1, "product" :"Fledermaus", "sizes" :[ "S", "M", "L", "XL" ] }{ "_id" :2, "product" :„Mütze“, „Größen“ :[ „S“, „L“, „XL“ ] }{ „_id“ :3, „Produkt“ :„Mütze“, „Größen“ :[ „S“, „M“ , "L", "XL" ] }
Lassen Sie uns mehrere Werte in das Array in Dokument 2 einfügen:
db.products.update(
{ _id: 2 },
{
$addToSet: {
sizes: {
$each: [ "XXL", "XXXL" ]
}
}
}
)
Lassen Sie uns nun die Sammlung erneut überprüfen:
db.products.find()
Ergebnis:
{ "_id" :1, "product" :"Fledermaus", "sizes" :[ "S", "M", "L", "XL" ] }{ "_id" :2, "product" :"Mütze", "Größen" :[ "S", "L", "XL", "XXL", "XXXL" ] }{ "_id" :3, "product" :"Cap", "sizes" :[ "S", "M", "L", "XL" ] }
Wir können sehen, dass die beiden Werte wie erwartet an das Array in Dokument 2 angehängt wurden.
Dieses Beispiel verwendet den $each
Modifikator, den Sie auch mit $push
verwenden können Betreiber.
Ich habe nur den $each
verwendet Modifikator, weil ich mehrere Werte hinzugefügt habe. Wenn ich nur einen Wert verwendet hätte, hätte ich $each
weglassen können Modifikator, und die Syntax hätte eher wie das obige $push
ausgesehen Beispiel.
Wie bereits erwähnt, wird der Wert nicht hinzugefügt, wenn er bereits vorhanden ist. Außerdem wird bei beiden Operatoren, wenn Sie ein Array hinzufügen, das gesamte Array als separater Wert innerhalb des vorhandenen Arrays hinzugefügt.
Siehe MongoDB $addToSet
für weitere Beispiele.