sql >> Database >  >> NoSQL >> MongoDB

Retourneert resultaat als een array van alleen waarden

U kunt map() . Gebruik Array.map() met mangoest omdat het een array retourneert, en je kunt beter gewoon de $group gebruiken _id dan het gebruik van $push

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

Of met Cursor.map() bij gebruik van de onderliggende Collection van de kerndriver:

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

Vrijwel hetzelfde met find() als u de "verschillende" resultaten niet wilt:

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

Of met de Cursor.map()

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

U kunt ook distinct() . gebruiken , die in feite een variatie van het aggregatieproces en de map() . doet "onder de motorkap" (het "retourneer alleen het veldgedeelte" en niet de afzonderlijke aggregatiemethode):

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

MongoDB zelf zal niets anders teruggeven dan een BSON-document, en een simpele string is GEEN BSON-document.



  1. Hoe start ik Mongo DB vanuit Windows?

  2. TTL voor een vast lid

  3. Wat is Mongoose-fout Gegoten naar ObjectId mislukt voor waarde XXX op pad _id?

  4. Mongoose verbinding