MongoDB - 按子字符串分组

时间:2017-03-24 22:11:58

标签: mongodb aggregation-framework

这是我第一次使用聚合框架并处理各个阶段。我有一个带有lastName字段的客户文档集合。我想在姓氏中返回一个数组或唯一的第一个字符的集合。我似乎使用以下代码:

db.getCollection('customers').aggregate( [

    {
        $match:
        {
            "lastName": { $exists: true }
        }
    },
    {
        $project:
        {
            _id: 0,
            "initial": { $substr: [ "$lastName", 0, 1 ] }
        }
    },
    {
        $group:
        {
            _id: { $substr: [ "$initial", 0, 1 ] }
        }
    },
    {
        $sort:
        {
            _id: 1
        }
    }    
    ]
);

我的结果如下:

/* 1 */
{
    "_id" : "B"
}

/* 2 */
{
    "_id" : "E"
}

/* 3 */
{
    "_id" : "F"
}

我的问题是:

  1. 我的$ project将值映射到“initial”。我无法弄清楚如何使输出使用“初始”而不是_id。 $ group是否需要_id?

  2. 有人可以向我展示一些如何获得相同结果的例子(例如使用.distinct()等)吗?

0 个答案:

没有答案