MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

MongoDB $arrayElemAt

Di MongoDB, $arrayElemAt operator pipeline agregasi mengembalikan elemen pada indeks array yang ditentukan.

Ia menerima dua argumen;

  • Array
  • Indeks elemen yang ingin Anda ambil

Contoh

Misalkan kita memiliki koleksi yang disebut posts dengan dokumen berikut:

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

Dalam dokumen ini, tags bidang berisi larik.

Kita dapat menggunakan $arrayElemAt operator untuk mengembalikan elemen array pada indeks tertentu.

Contoh:

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

Hasil:

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

Dalam hal ini, kami mengembalikan elemen array pertama. Array berbasis nol, jadi 0 mengacu pada elemen pertama dalam array.

Tip:Dari MongoDB 4.4, kita juga bisa menggunakan $first operator untuk mengembalikan elemen pertama dalam array.

Berikut ini contoh mendapatkan elemen kedua:

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

Hasil:

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

Nilai Negatif untuk Indeks

Anda dapat memberikan nilai negatif untuk argumen kedua. Saat Anda melakukan ini, $arrayElemAt menghitung mundur dari akhir larik.

Contoh:

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

Hasil:

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

Dalam hal ini, kita mendapatkan elemen terakhir dalam array.

Dari MongoDB 4.4, kita juga dapat menggunakan $last operator untuk mendapatkan elemen larik terakhir.

Menggabungkan dengan Operator Lain

Anda dapat menggunakan $arrayElemAt dengan operator lain untuk menghasilkan hasil yang Anda butuhkan.

Berikut ini contoh menggabungkannya dengan $binarySize operator untuk mengembalikan ukuran elemen larik tertentu.

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

Hasil:

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

  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Mongo Query dengan Regex di Node JS yang beroperasi PADA VARIABEL

  2. Menyimpan struct bersarang dengan mgo

  3. Pencarian Teks MongoDB DAN beberapa kata pencarian

  4. 'Gagal memutuskan tautan kesalahan file soket di MongoDB 3.0

  5. Tips untuk Meningkatkan Server Percona untuk MongoDB