В 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
.