MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

MongoDB $ arrayElemAt

Trong MongoDB, $arrayElemAt toán tử đường ống tổng hợp trả về phần tử tại chỉ mục mảng được chỉ định.

Nó chấp nhận hai đối số;

  • Mảng
  • Chỉ mục của phần tử bạn muốn truy xuất

Ví dụ

Giả sử chúng ta có một bộ sưu tập được gọi là posts với tài liệu sau:

{
	"_id" : 1,
	"title" : "Hello World!",
	"body" : "This is a test post for the purposes of testing",
	"tags" : [
		"html",
		"css",
		"sql",
		"xml"
	],
	"status" : null
}

Trong tài liệu này, các thẻ tags trường chứa một mảng.

Chúng ta có thể sử dụng $arrayElemAt toán tử để trả về một phần tử mảng tại một chỉ mục cụ thể.

Ví dụ:

db.posts.aggregate([
  {
    $project: {
      "tag": { $arrayElemAt: [ "$tags", 0 ] }
    }
  }
])

Kết quả:

{ "_id" : 1, "tag" : "html" }

Trong trường hợp này, chúng tôi trả về phần tử mảng đầu tiên. Mảng dựa trên 0 và vì vậy 0 tham chiếu đến phần tử đầu tiên trong mảng.

Mẹo:Từ MongoDB 4.4, chúng tôi cũng có thể sử dụng $first toán tử để trả về phần tử đầu tiên trong một mảng.

Dưới đây là một ví dụ về cách lấy phần tử thứ hai:

db.posts.aggregate([
  {
    $project: {
      "tag": { $arrayElemAt: [ "$tags", 1 ] }
    }
  }
])

Kết quả:

{ "_id" : 1, "tag" : "css" }

Giá trị phủ định cho chỉ mục

Bạn có thể cung cấp giá trị âm cho đối số thứ hai. Khi bạn làm điều này, $arrayElemAt đếm ngược từ cuối mảng.

Ví dụ:

db.posts.aggregate([
  {
    $project: {
      "tag": { $arrayElemAt: [ "$tags", -1 ] }
    }
  }
])

Kết quả:

{ "_id" : 1, "tag" : "xml" }

Trong trường hợp này, chúng tôi nhận được phần tử cuối cùng trong mảng.

Từ MongoDB 4.4, chúng ta cũng có thể sử dụng $last toán tử để lấy phần tử mảng cuối cùng.

Kết hợp với các nhà khai thác khác

Bạn có thể sử dụng $arrayElemAt với các toán tử khác để tạo ra kết quả bạn yêu cầu.

Dưới đây là một ví dụ về việc kết hợp nó với $binarySize toán tử để trả về kích thước của một phần tử mảng cụ thể.

db.posts.aggregate([
  {
    $project: {
      "tagsSize": { $binarySize: { $arrayElemAt: [ "$tags", 0 ] } }
    }
  }
])

Kết quả:

{ "_id" : 1, "tagsSize" : 4 }

  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB BulWrite ()

  2. Phát triển cơ sở dữ liệu Python và MongoDB

  3. Cách quản lý người dùng và xác thực trong MongoDB

  4. MongoDB trên AWS:Làm thế nào để Chọn Loại Phiên bản EC2 Phù hợp cho Máy chủ MongoDB của bạn?

  5. 5 cách để có được những phút mỗi ngày trong MongoDB