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

Vrátí výsledek jako pole pouze hodnot

Můžete map() . Použijte Array.map() s mongoose, protože vrací pole a je lepší jednoduše použít $group _id než pomocí $push

const subCategory = (await SubCategory.aggregate([
  { '$match': { category: "dining" } },
  { '$group': { '_id': "$name" } }
])).map(({ _id }) => _id);

Nebo pomocí Cursor.map() pokud používáte základní Collection ze základního ovladače:

const subCategory = await SubCategory.collection.aggregate([
  { '$match': { category: "dining" } },
  { '$group': { '_id': "$name"  } }
]).map(({ _id }) => _id).toArray();

Totéž platí pro find() pokud nechcete mít "odlišné" výsledky:

const subCategory = (await Subcategory.find({ category: "dining" }))
  .map(({ name }) => name);

Nebo pomocí Cursor.map()

const subCategory = await Subcategory.collection.find({ category: "dining" })
  .map(({ name }) => name).toArray();

Můžete také použít distinct() , což v podstatě dělá variaci procesu agregace a map() "pod kapotou" ("vrátí pouze část pole" a nikoli metodu odlišné agregace):

const subCategory = await SubCategory.distinct("name",{ category: "dining" });

MongoDB sám o sobě nevrátí nic jiného než dokument BSON a jednoduchý řetězec NENÍ dokument BSON.



  1. Ukládání klíčů s prefixem, jehož platnost vyprší v redis

  2. Vložte velký záznam do mongodb pomocí mongo shell

  3. Vraťte poslední dokument z vyhledávání

  4. Migrace MongoDB na DynamoDB, část 1