In MongoDB kunt u de $push . gebruiken operator om een waarde aan een array toe te voegen.
Deze operator kan worden gebruikt met verschillende modificaties, waaronder de $position modificator. De $position modifier stelt u in staat om de positie binnen de array te specificeren waar u de nieuwe waarde wilt invoegen.
Waarde toevoegen aan het begin van de array
Stel dat we de volgende verzameling hebben:
{ "_id" : 1, "prod" : "Bat", "sizes" : [ "S", "M", "XL" ] }
{ "_id" : 2, "prod" : "Hat", "sizes" : [ "S", "L", "XL" ] }
{ "_id" : 3, "prod" : "Cap", "sizes" : [ "M", "L" ] } En stel dat we een waarde willen toevoegen aan het begin van de array in document 3.
We kunnen dit:
db.products.update(
{ _id: 3 },
{
$push: {
sizes: {
$each: [ "S" ],
$position: 0
}
}
}
) Laten we nu de collectie nog eens bekijken:
db.products.find() Resultaat:
{ "_id" : 1, "prod" : "Bat", "sizes" : [ "S", "M", "XL" ] }
{ "_id" : 2, "prod" : "Hat", "sizes" : [ "S", "L", "XL" ] }
{ "_id" : 3, "prod" : "Cap", "sizes" : [ "S", "M", "L" ] }
Arrays zijn gebaseerd op nul, dus position: 0 voegt de waarde toe als het eerste element in de array.
Voeg een waarde toe aan het midden van de array
Stel dat we de waarde M . willen toevoegen naar document 2, en we willen dat het tussen S . gaat en L .
Hier is hoe we dat kunnen doen:
db.products.update(
{ _id: 2 },
{
$push: {
sizes: {
$each: [ "M" ],
$position: 1
}
}
}
) Laten we nu de collectie nog eens bekijken:
db.products.find() Resultaat:
{ "_id" : 1, "prod" : "Bat", "sizes" : [ "S", "M", "XL" ] }
{ "_id" : 2, "prod" : "Hat", "sizes" : [ "S", "M", "L", "XL" ] }
{ "_id" : 3, "prod" : "Cap", "sizes" : [ "S", "M", "L" ] }
We gebruikten $position: 1 , want dat is de positie die we wilden M te gaan (d.w.z. de tweede positie).
Negatieve waarden
U kunt ook een negatieve waarde als positie opgeven. Wanneer u dit doet, wordt de waarde ingevoegd op de gespecificeerde negatieve positie, terugtellend vanaf het einde.
Stel dat we L . willen invoegen tussen M en XL in document 1.
Hier is hoe we dat zouden doen met een negatieve positie:
db.products.update(
{ _id: 1 },
{
$push: {
sizes: {
$each: [ "L" ],
$position: -1
}
}
}
) Controleer het resultaat:
db.products.find() Resultaat:
{ "_id" : 1, "prod" : "Bat", "sizes" : [ "S", "M", "L", "XL" ] }
{ "_id" : 2, "prod" : "Hat", "sizes" : [ "S", "M", "L", "XL" ] }
{ "_id" : 3, "prod" : "Cap", "sizes" : [ "S", "M", "L" ] }
Met een negatieve indexpositie, als u meerdere elementen opgeeft in de $each array, het laatst toegevoegde element bevindt zich vanaf het einde op de opgegeven positie.