$slice (projection)

views上的db.collection.find()个操作不支持$slice个投影运算符。

考虑以下原型查询:

db.collection.find( { field: value }, { array: {$slice: count } } );

此操作从保存在array字段中的数组中选择由名为field的字段标识的文档collection并保存value,并返回由count的值指定的元素数。如果count的值大于array中的元素数,则查询返回数组的所有元素。

$slice接受多种格式的参数,包括负值和数组。请考虑以下示例:

db.posts.find( {}, { comments: { $slice: 5 } } )

在这里,$slice选择comments字段中数组的前五个项目。

db.posts.find( {}, { comments: { $slice: -5 } } )

此操作返回数组中的最后五个项目。

以下示例将数组指定为$slice的参数。数组采用[ skip , limit ]的形式,其中第一个值表示要跳过的数组中的项目数,第二个值表示要返回的项目数。

db.posts.find( {}, { comments: { $slice: [ 20, 10 ] } } )

在此,查询将跳过该数组的前 20 个项目,仅返回 10 个项目。

db.posts.find( {}, { comments: { $slice: [ -20, 10 ] } } )

此操作还返回 10 个项目,从数组的最后一个项目开始的第 20 个项目开始。

首页