这是我第一次使用聚合框架并处理各个阶段。我有一个带有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"
}
我的问题是:
我的$ project将值映射到“initial”。我无法弄清楚如何使输出使用“初始”而不是_id。 $ group是否需要_id?
有人可以向我展示一些如何获得相同结果的例子(例如使用.distinct()等)吗?