MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

MongoDB $arrayElemAt

В MongoDB, $arrayElemAt Операторът на конвейера за агрегиране връща елемента с посочения индекс на масива.

Приема два аргумента;

  • Масивът
  • Индексът на елемента, който искате да извлечете

Пример

Да предположим, че имаме колекция, наречена posts със следния документ:

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

В този документ tags полето съдържа масив.

Можем да използваме $arrayElemAt оператор за връщане на елемент от масив с конкретен индекс.

Пример:

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

Резултат:

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

В този случай връщаме първия елемент от масива. Масивите са базирани на нула и така 0 се отнася до първия елемент в масива.

Съвет:От MongoDB 4.4 можем също да използваме $first оператор за връщане на първия елемент в масив.

Ето пример за получаване на втория елемент:

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

Резултат:

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

Отрицателни стойности за индекса

Можете да предоставите отрицателна стойност за втория аргумент. Когато направите това, $arrayElemAt брои обратно от края на масива.

Пример:

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

Резултат:

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

В този случай получаваме последния елемент в масива.

От MongoDB 4.4 можем също да използваме $last оператор, за да получите последния елемент от масива.

Комбиниране с други оператори

Можете да използвате $arrayElemAt с други оператори, за да получите резултатите, от които се нуждаете.

Ето пример за комбинирането му с $binarySize оператор за връщане на размера на конкретен елемент от масива.

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

Резултат:

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

  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Как да експортирате колекция в CSV в MongoDB?

  2. Възможно ли е да се получи единичен резултат в съвкупност?

  3. Производителност на заявки за MongoDB за над 5 милиона записа

  4. Как да изпълня MongoDB js скрипт с помощта на Java MongoDriver

  5. Отпечатване на изхода на заявката на Mongo във файл, докато сте в mongo shell