MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Einfügen eines Werts an einer bestimmten Position in einem Array in MongoDB

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 zwischen S liegt und L .

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 wollten M 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 dazwischen M und XL 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.