在MongoDB中的数组中的特定位置插入一个值
在MongoDB中,您可以使用运算符将值附加到数组中。[$push](https://database.guide/mongodb-push/ "MongoDB $push")
此运算符可以与各种修饰符一起使用,其中一个是修饰符。修饰符允许您指定数组中要插入新值的位置。$position``$position
向数组的开头添加值
假设我们有以下集合:
{ “_id” : 1, “prod” : “Bat”, “sizes” : [ “S”, “M”, “XL” ] } { “_id” : 2, “prod” : “Hat”, “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” : “Bat”, “sizes” : [ “S”, “M”, “XL” ] } { “_id” : 2, “prod” : “Hat”, “sizes” : [ “S”, “L”, “XL” ] } { “_id” : 3, “prod” : “Cap”, “sizes” : [ “S”, “M”, “L” ] }
数组从零开始,因此将值添加为数组中的第一个元素。position: 0
在数组中间添加一个值
假设我们要将值添加到文档 2,并且我们希望它在 和 之间移动。M``S``L
以下是我们如何做到这一点:
db.products.update(
{ _id: 2 },
{
$push: {
sizes: {
$each: [ "M" ],
$position: 1
}
}
}
)
现在让我们再次检查集合:
db.products.find()
结果:
{ “_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” ] }
我们使用了 ,因为这是我们想要去的位置(即第二个位置)。$position: 1``M
负值
您还可以提供负值作为位置。执行此操作时,该值将从末尾开始倒计时插入到指定的负位置。
假设我们要插入文档 1 之间和文档 1 中。L``M``XL
以下是我们使用负仓位的方法:
db.products.update(
{ _id: 1 },
{
$push: {
sizes: {
$each: [ "L" ],
$position: -1
}
}
}
)
检查结果:
db.products.find()
结果:
{ “_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” ] }
对于负索引位置,如果在数组中指定多个元素,则最后添加的元素位于末尾的指定位置。$each