Để tìm thuộc tính của element đầu tiên trong mảng, bạn sử dụng toán tử projection $slice kết hợp với chỉ định trường.
Tạo dữ liệu mẫu
> db.firstElementOfArray.insertOne( { _id: 100, "Details": [ { "CustomerName": "John", "CustomerCountryName":"US" } ] } );
{ "acknowledged" : true, "insertedId" : 100 }
> db.firstElementOfArray.insertOne( { _id: 101, "Details": [ { "CustomerName": "Carol", "CustomerCountryName":"UK" }, { "CustomerName": "David", "CustomerCountryName":"AUS" } ] } );
{ "acknowledged" : true, "insertedId" : 101 }
Hiển thị document:
> db.firstElementOfArray.find().pretty();
Lấy CustomerName của element đầu tiên
{ "_id" : 100, "Details" : [ { "CustomerName" : "John" } ] } { "_id" : 101, "Details" : [ { "CustomerName" : "Carol" } ] }Giải thích
{$slice: 1}- Chỉ lấy 1 element đầu tiên của mảngDetails'Details.CustomerName': 1- Chỉ chiếu trường CustomerName bên trong element đó- Kết quả: Mảng
Detailschỉ còn 1 element chứa trườngCustomerName
Các biến thể $slice
{$slice: n}- n element đầu tiên (n > 0){$slice: -n}- n element cuối cùng{$slice: [skip, limit]}- Bỏ qua skip element, lấy limit element
Cách này hữu ích khi chỉ cần dữ liệu từ element đầu/cuối mảng mà không cần $unwind toàn bộ.