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

Giới hạn số phần tử mảng trả về trong MongoDB ($slice)

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
Lưu ý: $slice chỉ dùng trong projection, không dùng trong query condition. Để lọc trong aggregation, dùng $slice trong $project hoặc $arrayElemAt.