MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Wstaw wartość w określonej pozycji w tablicy w MongoDB

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.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Znajdź dokumenty w MongoDB, których pole tablicy jest podzbiorem tablicy zapytań

  2. Jak programowo wykonać polecenie mongodump z node.js?

  3. MongoDB Specyfikatory formatu $dateFromString

  4. Jak zwrócić tablicę ciągów za pomocą agregacji mongodb?

  5. MongoError:opcja „kursor” jest wymagana, z wyjątkiem agregacji z argumentem wyjaśnij