次の構造の曲とそのメタデータのコレクションがあります。
[{
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になります。これは、文字列ではなく数値を合計することを想定しているためです。
私はそれを回避することはできません!