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

MongoDB $pop

В MongoDB можете да използвате $pop оператор за премахване на първия или последния елемент от масив.

Използвайте $pop във връзка с метод като update() за да актуализирате посочения документ с промяната.

Използвайте -1 за да премахнете първия елемент и 1 за да премахнете последното.

Пример

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

{ "_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" ] }

Премахнете първия елемент

Можем да премахнем първия елемент от масива в документ 1 по следния начин:

db.products.update( 
  { _id: 1 }, 
  { $pop: { sizes: -1 } } 
)

Изход:

WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

Това съобщение ни казва, че един документ съответства и един (т.е. същият документ) е променен.

Нека да разгледаме колекцията сега:

db.products.find()

Резултат:

{ "_id" : 1, "prod" : "Bat", "sizes" : [ "M", "L", "XL" ] }
{ "_id" : 2, "prod" : "Hat", "sizes" : [ "S", "M", "L", "XL" ] }
{ "_id" : 3, "prod" : "Cap", "sizes" : [ "S", "M", "L" ] }

Можем да видим, че първият елемент от масива в документ 1 е премахнат.

Премахнете последния елемент

Сега нека премахнем последния елемент от масива в документ 2:

db.products.update( 
  { _id: 2 }, 
  { $pop: { sizes: 1 } } 
)

Изход:

WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

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

db.products.find()

Резултат:

{ "_id" : 1, "prod" : "Bat", "sizes" : [ "M", "L", "XL" ] }
{ "_id" : 2, "prod" : "Hat", "sizes" : [ "S", "M", "L" ] }
{ "_id" : 3, "prod" : "Cap", "sizes" : [ "S", "M", "L" ] }

Можем да видим, че последният елемент е премахнат от масива в документ 2.

Актуализиране на всички документи

Ето пример, който използва updateMany() метод за актуализиране на всички документи:

db.products.updateMany( 
  { }, 
  { $pop: { sizes: 1 } } 
)

Изход:

{ "acknowledged" : true, "matchedCount" : 3, "modifiedCount" : 3 }

И проверете отново колекцията:

db.products.find()

Резултат:

{ "_id" : 1, "prod" : "Bat", "sizes" : [ "M", "L" ] }
{ "_id" : 2, "prod" : "Hat", "sizes" : [ "S", "M" ] }
{ "_id" : 3, "prod" : "Cap", "sizes" : [ "S", "M" ] }

Като алтернатива можете да използвате update() метод за актуализиране на множество документи, като посочите multi: true .


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Как да извършвам заявка от Mongoose pre hook в приложение Node.js / Express?

  2. Намерете документи с масиви, които не съдържат документ с определена стойност на полето в MongoDB

  3. Създайте реактивна публикация с допълнителни полета във всеки документ

  4. 4 начина за изброяване на колекциите в база данни на MongoDB

  5. Как да се свържете с mongodb с помощта на sailsjs v0.10?