Để giới hạn số lượng phần tử trả về từ một mảng trong MongoDB, bạn sử dụng toán tử $slice trong phần projection của find(). Điều này giúp giảm băng thông và tăng hiệu suất khi mảng lớn nhưng chỉ cần vài phần tử đầu.
1. Tạo bộ sưu tập và chèn dữ liệu
> db.demo48.insertOne({ "Name": ["David", "Chris", "Sam", "Mike", "Carol"] });
{ "acknowledged": true, "insertedId": ObjectId("5e270491cfb11e5c34d89901") }
2. Xem dữ liệu đầy đủ
> db.demo48.find();
Kết quả:
{ "_id": ObjectId("..."), "Name": ["David", "Chris", "Sam", "Mike", "Carol"] }
3. Chỉ lấy 2 phần tử đầu tiên của mảng Name
> db.demo48.find({}, { Name: { $slice: 2 } });
4. Kết quả
{ "_id": ObjectId("..."), "Name": ["David", "Chris"] }
Các dạng của $slice:
{ $slice: n }: Lấynphần tử đầu (n > 0) hoặcnphần tử cuối (n < 0).{ $slice: [skip, limit] }: Bỏ quaskipphần tử đầu, lấylimitphần tử tiếp theo.
Ví dụ: { $slice: [1, 2] } -> lấy 2 phần tử từ chỉ số 1 (phần tử 2 và 3).