sql >> Database teknologi >  >> NoSQL >> MongoDB

Returner resultatet kun som en matrix af værdier

Du kan map() . Brug Array.map() med mongoose, da den returnerer et array, og du er bedre stillet ved blot at bruge $group _id end at bruge $push

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

Eller med Cursor.map() hvis du bruger den underliggende Collection fra kernedriveren:

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

Meget det samme med find() hvis du ikke vil have de "særskilte" resultater:

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

Eller med Cursor.map()

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

Du kan også bruge distinct() , som grundlæggende udfører en variation af aggregeringsprocessen og map() "under motorhjelmen" ( "retur bare markdelen" og ikke den særskilte aggregeringsmetode):

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

MongoDB selv returnerer ikke andet end et BSON-dokument, og en simpel streng er IKKE et BSON-dokument.



  1. MongoDB $ltrim

  2. Mongodb findAndModify node js

  3. AOF og RDB sikkerhedskopier i redis

  4. mongodb få _id som streng i find-forespørgsel