当前位置: 首页 > 面试题库 >

仅以值数组形式返回结果

公西凯捷
2023-03-14
问题内容

我有以下收藏

[ { _id: 5b12a7977990062f097d03ce,
    name: 'Breakfast',
    category: 'dining' },
  { _id: 5b12a7977990062f097d03d0,
    name: 'Brunch',
    category: 'dining' },
  { _id: 5b12a7977990062f097d03d2,
    name: 'Lunch',
    category: 'dining' } ]

我要收集所有namecategory dining在主阵列

我已经试过了

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

但这给了我这样的输出

[ { _id: null,
    category: 
     [ 'Breakfast',
       'Brunch',
       'Lunch' ] } ]

我想要这样的输出

     [ 'Breakfast',
       'Brunch',
       'Lunch' ]

问题答案:

你可以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文档。



 类似资料:
  • 问题内容: 如果我有一个工作表,例如: 我想要一个查询,该查询将按日期对它们进行分组,并计算该日期的每个状态和总状态的发生率。 这给了我 我现在想将其压缩为每个唯一日期的一行,并为每个日期安排某种多列布局。一个约束是5个可能的单词中的任何一个,但每个日期可能没有每个状态之一。另外,我希望每天总计所有状态。因此,所需的结果将如下所示: 列可以通过类似的方式动态构建 对于不包含任何此类状态的日期,结果

  • 我想从函数getPurchaseOrderForVendor返回一个结构数组。这是编译im时遇到的一个错误,比如invoiceSettlement。sol:44:80:ParserError:Expected type name function getPurchaseOrderForVendor(string vendorNameInput)constant ret urns(struct[])

  • 问题内容: 我有一本字典,其中包含用枚举值散列的对象: 我希望能够提取此字典包含的所有颜色(值)的数组。我以为我可以使用该属性,就像遍历字典值()一样,但这会返回错误: 似乎该方法返回了一个更抽象的集合类型,而不是返回值的an 。有没有一种方法可以获取包含字典值的而不循环提取它们的值? 问题答案: 从Swift 2.0开始,的属性现在返回而不是。该类型知道如何使用此抽象集合类型进行初始化: Swi

  • 问题内容: 背景 我需要从Oracle提取几千行并将其转换为JSON,以便在SlickGrid中使用。目前,我正在获取PHP中的行,使用iconv将其从ISO转换为UTF-8,并使用json_encode导出到json。整个操作在数据库端大约需要1秒,而生成JSON则需要5秒。这是很长的路要走。 问题 我已经读到Oracle 12c支持JSON,但是我找不到我真正需要的东西。 有没有办法以json

  • 问题内容: 如何将Webmethod的值以JSON格式返回给客户端? 我要返回两个静态int值。 我是否需要使用这两个属性创建新对象并返回它? GetStatus()方法经常被调用,我不喜欢每次仅用于json格式创建一个特殊对象的想法。 在客户端,我在捕获返回值: 问题答案: 我只想带一个物体。它符合您的需求。如果您有两个返回值,则必须以结构化的方式将它们放在一起。

  • 下面是最小硬币兑换问题的强力解决方案。它需要一个整数A(这是需要进行的更改)和一组硬币面额。它返回一个对象results,该对象具有基于硬币面额数组和硬币数组可以返回的最小硬币数。 例如,如果要求以的值为美分提供零钱,则它应返回分钟硬币和两个一角硬币的数组。 它返回正确的最小值,但不是正确的硬币数组。