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

Lấy N phần tử cuối mảng trong MongoDB với $slice

Toán tử $slice trong projection của find() cho phép lấy một đoạn (subset) của mảng, bao gồm N phần tử cuối với số âm.

Dữ liệu mẫu

> db.demo173.insertOne({"ListOfValues":[10,40,100,560,700,900]});
{ "acknowledged" : true, "insertedId" : ObjectId("5e383a4f9e4f06af551997e4") }

Truy vấn lấy 2 phần tử cuối

> db.demo173.find({}, { "ListOfValues": { "$slice": -2 } } );

Kết quả

{ "_id" : ObjectId("5e383a4f9e4f06af551997e4"), "ListOfValues" : [ 700, 900 ] }

Cú pháp $slice trong projection:

Giá trịKết quả
N (số dương)N phần tử đầu tiên
-N (số âm)N phần tử cuối cùng
[skip, limit]Bỏ qua skip phần tử, lấy limit phần tử

Ví dụ:

  • {arr: {$slice: 3}} → 3 phần tử đầu
  • {arr: {$slice: -3}} → 3 phần tử cuối
  • {arr: {$slice: [2, 3]}} → Bỏ 2, lấy 3 (phần tử 3,4,5)
  • {arr: {$slice: [-5, 2]}} → Từ cuối lùi 5, lấy 2

Lưu ý: $slice trong find() chỉ dùng cho projection. Trong aggregate, dùng stage $project với $slice hoặc $arrayElemAt.