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

Върнете резултата само като масив от стойности

Можете да map() . Използвайте Array.map() с mongoose, тъй като връща масив и е по-добре просто да използвате $group _id отколкото да използвате $push

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

Или с Cursor.map() ако използвате основната Collection от основния драйвер:

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

Почти същото с find() ако не искате "отличителните" резултати:

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

Или с Cursor.map()

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

Можете също да използвате distinct() , което основно прави вариант на процеса на агрегиране и map() „под капака“ („връщане само на частта от полето“, а не отделният метод на агрегиране ):

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

Самият MongoDB няма да върне нищо друго освен BSON документ, а обикновен низ НЕ е BSON документ.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB изберете брой (различен x) в индексирана колона - брой уникални резултати за големи набори от данни

  2. MongoDB $ седмица

  3. MongoDB връща True, ако документът съществува

  4. Групиране по интервали от дати

  5. Индексиране на мангуста в производствения код