MongoDB - $slice 修饰符
MongoDB 提供了不同类型的数组更新运算符来更新文档中数组字段的值, $slice
修饰符就是其中之一。此修饰符用于在$push
操作期间限制数组项的数量。
句法:
{
$push: {
: {
$each: [ , , ... ],
$slice:
}
}
}
- 如果number的值为零,则此修饰符会将数组字段更新为空数组。
- 如果number 的值为负,则此修饰符将更新数组字段以仅包含最后一个数字项。
- 如果number 的值为正,则此修饰符将更新数组字段以仅包含第一个数字项。
-
$slice
修饰符必须与$each
修饰符一起出现在$push
运算符。您可以在 $each 修饰符中传递一个空数组,这有助于 $slice 修饰符显示其效果。如果您使用没有 $each 修饰符的 $slice 修饰符,那么您将得到一个错误。 - 修饰符在 $push 操作中出现的顺序无关紧要。
在以下示例中,我们正在使用:
Database: GeeksforGeeks
Collection: contributor
Document: two documents that contain the details of the contributor in the form of field-value pairs.
从末尾切片数组:
在此示例中,我们在语言字段中添加新项目,然后使用 $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 修饰符用于仅保留语言数组的前四个排序项。