sql >> Databáze >  >> NoSQL >> MongoDB

MongoDB $arrayElemAt

V MongoDB, $arrayElemAt operátor agregačního kanálu vrátí prvek na zadaném indexu pole.

Přijímá dva argumenty;

  • Pole
  • Index prvku, který chcete načíst

Příklad

Předpokládejme, že máme kolekci nazvanou posts s následujícím dokumentem:

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

V tomto dokumentu tags pole obsahuje pole.

Můžeme použít $arrayElemAt operátor vrátí prvek pole na konkrétním indexu.

Příklad:

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

Výsledek:

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

V tomto případě vrátíme první prvek pole. Pole jsou založeny na nule, a tedy 0 odkazuje na první prvek v poli.

Tip:Od MongoDB 4.4 můžeme také použít $first operátor vrátí první prvek v poli.

Zde je příklad získání druhého prvku:

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

Výsledek:

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

Záporné hodnoty indexu

Pro druhý argument můžete zadat zápornou hodnotu. Když to uděláte, $arrayElemAt počítá zpětně od konce pole.

Příklad:

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

Výsledek:

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

V tomto případě získáme poslední prvek v poli.

Od MongoDB 4.4 můžeme také použít $last operátor k získání posledního prvku pole.

Kombinace s jinými operátory

Můžete použít $arrayElemAt s jinými operátory, abyste dosáhli požadovaných výsledků.

Zde je příklad kombinace s $binarySize operátor vrátí velikost konkrétního prvku pole.

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

Výsledek:

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

  1. Příliš mnoho otevřených souborů při zajištění indexového mongo

  2. Jak mohu vytvořit program pomocí c++ ovladače mongodb?

  3. vypnout redis-server z příkazového řádku

  4. Odstranění klíče/hodnoty z existující položky MongoDB