On this page
$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 个项目开始。