Sử dụng $slice trong projection (đối số 2 của find) để giới hạn số phần tử mảng trả về. Tạo collection:
> db.demo594.insertOne({
... id:1,
... details:[
... {Name:"Chris",Age:21},
... {Name:"Bob",Age:20},
... {Name:"David",Age:23},
... {Name:"Sam",Age:22}
... ]
... });
{ "acknowledged" : true, "insertedId" : ObjectId("5e933459fd2d90c177b5bcdd") }
Hiển thị đầy đủ (4 phần tử):
> db.demo594.find();
Truy vấn: Chỉ lấy 1 phần tử đầu của mảng details, kèm trường Name (cấp gốc):
> db.demo594.find({}, {"Name": 1, "details": { "$slice": 1 }});Kết quả:
Các dạng $slice trong projection:
{$slice: n}- n phần tử đầu (n > 0){$slice: -n}- n phần tử cuối{$slice: [skip, limit]}- bỏ qua skip, lấy limit
$slice trong $project hoặc $arrayElemAt.