您正在寻找的是$slice
投影。
从数组的开头获取多个元素
您可以传递一个简单$limit
的带有多个值的返回值(例如 1):
> db.mycoll.find({}, {_id: 0, a: { $slice: 1}})
{ "a" : [ 4 ] }
{ "a" : [ 24 ] }
{ "a" : [ 4 ] }
{ "a" : [ 4 ] }
{ "a" : [ 2 ] }
{ "a" : [ 4 ] }
获取一系列元素
您可以传递带有 ( $skip
, $limit
) 参数的数组。
注意:要匹配您的预期输出,您必须找到元素 3 到 5(跳过前 2 个元素,返回下一个 3):
> db.mycoll.find({}, {_id: 0, a: { $slice: [2,3]}})
{ "a" : [ 8, 71, 21 ] }
{ "a" : [ 2, 1 ] }
{ "a" : [ ] }
{ "a" : [ 8, 21 ] }
{ "a" : [ 71, 21 ] }
{ "a" : [ 8 ] }
获取数组的第 n 个元素
将元素的数量传递给 $skip,并将值 1 作为限制。
例如,要查找第二个元素,您需要跳过 1 个条目:
> db.mycoll.find({}, {_id: 0, a: { $slice: [1,1]}})
{ "a" : [ 2 ] }
{ "a" : [ 2 ] }
{ "a" : [ 1 ] }
{ "a" : [ 2 ] }
{ "a" : [ 8 ] }
{ "a" : [ 2 ] }
请注意,$slice
运算符:
- 总是返回一个数组
- 将为匹配查找条件的文档返回一个空数组,但为 $slice 选择返回一个空结果(例如,如果您要求只有 2 个元素的数组的第 5 个元素)