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

Truy vấn MongoDB tìm thuộc tính của element đầu tiên trong mảng?

Để 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ảng Details
  • 'Details.CustomerName': 1 - Chỉ chiếu trường CustomerName bên trong element đó
  • Kết quả: Mảng Details chỉ còn 1 element chứa trường CustomerName

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ộ.