MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Вмъкнете стойност на конкретна позиция в масив в MongoDB

В MongoDB можете да използвате $push оператор за добавяне на стойност към масив.

Този оператор може да се използва с различни модификатори, един от които е $position модификатор. $position модификаторът ви позволява да посочите позицията в масива, в която искате да вмъкнете новата стойност.

Добавяне на стойност към началото на масива

Да предположим, че имаме следната колекция:

{ "_id" :1, "prod" :"Прилеп", "размери" :[ "S", "M", "XL" ] }{ "_id" :2, "prod" :"Шапка" , "sizes" :[ "S", "L", "XL" ] }{ "_id" :3, "prod" :"Cap", "sizes" :[ "M", "L" ] } 

И да предположим, че искаме да добавим стойност към началото на масива в документ 3.

Можем да направим това:

db.products.update(
   { _id: 3 },
   { 
     $push: { 
        sizes: {
           $each: [ "S" ],
           $position: 0
        }
      } 
    }
) 

Сега нека проверим колекцията отново:

db.products.find() 

Резултат:

{ "_id" :1, "prod" :"Прилеп", "размери" :[ "S", "M", "XL" ] }{ "_id" :2, "prod" :"Шапка" , "sizes" :[ "S", "L", "XL" ] }{ "_id" :3, "prod" :"Cap", "sizes" :[ "S", "M", "L" ] }

Масивите са базирани на нула, така че position: 0 добавя стойността като първи елемент в масива.

Добавете стойност към средата на масива

Да предположим, че искаме да добавим стойността M към документ 2 и искаме той да преминава между S и L .

Ето как можем да направим това:

db.products.update(
   { _id: 2 },
   { 
     $push: { 
        sizes: {
           $each: [ "M" ],
           $position: 1
        }
      } 
    }
) 

Сега нека проверим колекцията отново:

db.products.find() 

Резултат:

{ "_id" :1, "prod" :"Прилеп", "размери" :[ "S", "M", "XL" ] }{ "_id" :2, "prod" :"Шапка" , "sizes" :[ "S", "M", "L", "XL" ] }{ "_id" :3, "prod" :"Cap", "sizes" :[ "S", "M" , "L" ] }

Използвахме $position: 1 , защото това е позицията, която искахме M да отиде (т.е. втората позиция).

Отрицателни стойности

Можете също да предоставите отрицателна стойност като позиция. Когато направите това, стойността се вмъква на посочената отрицателна позиция, като се брои обратно от края.

Да предположим, че искаме да вмъкнем L между M и XL в документ 1.

Ето как ще направим това, използвайки отрицателна позиция:

db.products.update(
   { _id: 1 },
   { 
     $push: { 
        sizes: {
           $each: [ "L" ],
           $position: -1
        }
      } 
    }
) 

Проверете резултата:

db.products.find() 

Резултат:

{ "_id" :1, "prod" :"Прилеп", "размери" :[ "S", "M", "L", "XL" ] }{ "_id" :2, "prod" :"Шапка", "размери" :[ "S", "M", "L", "XL" ] }{ "_id" :3, "prod" :"Капачка", "размери" :[ "S" , "M", "L" ] }

С отрицателна позиция на индекса, ако посочите няколко елемента в $each масив, последният добавен елемент е на посочената позиция от края.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Инсталирайте MongoDB на Mac

  2. Създаване на нови колекции Meteor в движение

  3. Местоположение на базата данни mongodb на mac

  4. MongoDB $round

  5. Използване на множество бази данни Mongodb с Meteor.js