Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MongoDB

Truy vấn MongoDB lấy số lượng mục cụ thể từ mảng ($slice)

Để 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ấy n phần tử đầu (n > 0) hoặc n phần tử cuối (n < 0).
  • { $slice: [skip, limit] }: Bỏ qua skip phần tử đầu, lấy limit phầ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).