首页 > 解决方案 > 如何汇总公共属性值的结果?

问题描述

我有一组拥有group财产的人。组值是一个随机字符串,我不知道何时进行查询。有些人group的价值观可能是相同的。

我想编写一个查询来每组只检索一个人(该组中返回的人目前不相关)。

我想我必须编写某种聚合。但是我只阅读了关于聚合已知值的示例......相反,我需要聚合未知值......

我的架构是这样的:

const schemaPersons = new Schema({
  name: {
    type: String,
    required: true,
  },
  group: {
    type: String,
  },
};

标签: javascriptnode.jsmongodbmongoose

解决方案


您可以使用$group阶段编写聚合查询:

  • $group阶段,按字段分组,并且只获取字段group中第一人的根文档person
Persons.aggregate([
  {
    $group: {
      _id: "$group",
      person: { $first: "$$ROOT" }
    }
  }
]);

操场


推荐阅读