📜  MongoDB - $slice 修饰符

📅  最后修改于: 2022-05-13 01:56:58.262000             🧑  作者: Mango

MongoDB - $slice 修饰符

MongoDB 提供了不同类型的数组更新运算符来更新文档中数组字段的值, $slice修饰符就是其中之一。此修饰符用于在$push操作期间限制数组项的数量。

句法:

{
  $push: {
     : {
       $each: [ , , ... ],
       $slice: 
     }
  }
}
  • 如果number的值为零,则此修饰符会将数组字段更新为空数组。
  • 如果number 的值为负,则此修饰符将更新数组字段以仅包含最后一个数字项。
  • 如果number 的值为正,则此修饰符将更新数组字段以仅包含第一个数字项。
  • $slice修饰符必须与$each修饰符一起出现在$push运算符。您可以在 $each 修饰符中传递一个空数组,这有助于 $slice 修饰符显示其效果。如果您使用没有 $each 修饰符的 $slice 修饰符,那么您将得到一个错误。
  • 修饰符在 $push 操作中出现的顺序无关紧要。

在以下示例中,我们正在使用:



从末尾切片数组:

在此示例中,我们在语言字段中添加新项目,然后使用 $slice 修饰符将数组修剪为最后四个项目。

db.contributor.update({name: "Suman"},
                      {$push: {language: { $each: ["SQL", "JS++"], 
                       $slice: -4}}})

从前面切片数组:

在此示例中,我们在语言字段中添加新项目,然后使用 $slice 修饰符将数组修剪为前五个项目。

db.contributor.update({name: "Rohit"}, 
                      {$push: {language: { $each: ["R Language", "JS++"],
                       $slice: 5}}})

使用$slice修饰符更新数组:

在此示例中,我们通过将数组修剪为最后三项来更新语言字段的数组。

db.contributor.update({name: "Rohit"},
                      {$push: {language: { $each: [], 
                        $slice: -3}}})

$slice修饰符与其他带有$push运算符的修饰符一起使用:

在此示例中,我们将 $slice 修饰符与其他修饰符一起使用,例如 $each 和 $sort 与 $push 运算符。

db.contributor.update({name: "Rohit"},
                      {$push: { language: { $each: ["C++", "Kotlin"], 
                       $sort: 1, $slice: 4}}})

这里,

  • $each 修饰符用于将多个文档添加到语言数组中。
  • $sort 修饰符用于对修改后的语言数组的所有项进行升序排序。
  • $slice 修饰符用于仅保留语言数组的前四个排序项。