【发布时间】:2013-03-18 01:49:25
【问题描述】:
我有一组歌曲及其元数据,其结构如下:
[{
title:"title",
artist:"artist",
album:"album,
...
},...
现在我想使用 Node.js 获取每个艺术家的列表,其中包含歌曲数量和专辑数量。到目前为止,使用聚合框架,我已经能够获取每个艺术家的对象数组、歌曲数量和专辑标题数组(而不仅仅是计数),使用以下管道:
collection.aggregate([
{ $project:{
artist:1,
album:1
}},
{ $group: {
_id: "$artist",
songs:{$sum: 1},
albums:{$addToSet:"$album"}
}},
{ $sort: { artist: 1 } }
]
如果我将$addToSet 替换为$sum,我会在每个艺术家中得到albums:0,因为它期望数字而不是字符串相加。
我就是无法绕过它!
【问题讨论】: