W MongoDB możesz użyć $push operatora, aby dodać wartość do tablicy.
Ten operator może być używany z różnymi modyfikatorami, z których jednym jest $position modyfikator. $position modyfikator pozwala określić pozycję w tablicy, do której chcesz wstawić nową wartość.
Dodaj wartość na początku tablicy
Załóżmy, że mamy następującą kolekcję:
{ "_id" : 1, "prod" : "Bat", "sizes" : [ "S", "M", "XL" ] }
{ "_id" : 2, "prod" : "Hat", "sizes" : [ "S", "L", "XL" ] }
{ "_id" : 3, "prod" : "Cap", "sizes" : [ "M", "L" ] } I załóżmy, że chcemy dodać wartość na początku tablicy w dokumencie 3.
Możemy to zrobić:
db.products.update(
{ _id: 3 },
{
$push: {
sizes: {
$each: [ "S" ],
$position: 0
}
}
}
) Teraz ponownie sprawdźmy kolekcję:
db.products.find() Wynik:
{ "_id" : 1, "prod" : "Bat", "sizes" : [ "S", "M", "XL" ] }
{ "_id" : 2, "prod" : "Hat", "sizes" : [ "S", "L", "XL" ] }
{ "_id" : 3, "prod" : "Cap", "sizes" : [ "S", "M", "L" ] }
Tablice są liczone od zera, więc position: 0 dodaje wartość jako pierwszy element tablicy.
Dodaj wartość do środka tablicy
Załóżmy, że chcemy dodać wartość M do dokumentu 2 i chcemy, aby znalazł się między S i L .
Oto, jak możemy to zrobić:
db.products.update(
{ _id: 2 },
{
$push: {
sizes: {
$each: [ "M" ],
$position: 1
}
}
}
) Teraz ponownie sprawdźmy kolekcję:
db.products.find() Wynik:
{ "_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" ] }
Użyliśmy $position: 1 , bo taką pozycję chcieliśmy M iść (tj. druga pozycja).
Wartości ujemne
Jako pozycję możesz również podać wartość ujemną. Gdy to zrobisz, wartość zostanie wstawiona w określonej ujemnej pozycji, licząc od końca.
Załóżmy, że chcemy wstawić L pomiędzy M i XL w dokumencie 1.
Oto, jak zabralibyśmy się do tego, używając pozycji ujemnej:
db.products.update(
{ _id: 1 },
{
$push: {
sizes: {
$each: [ "L" ],
$position: -1
}
}
}
) Sprawdź wynik:
db.products.find() Wynik:
{ "_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" ] }
Z ujemną pozycją indeksu, jeśli określisz wiele elementów w $each tablicy, ostatni dodany element znajduje się na określonej pozycji od końca.