次のようなドキュメント構造があります。
{
"_id" : NumberLong("80000000012"),
[...]
"categories" : [{
"parent" : "MANUFACTURER",
"category" : "Chevrolet"
}, {
"parent" : "MISCELLANEOUS",
"category" : "Miscellaneous"
}],
[...]
}
「親」フィールドごとにすべての「カテゴリ」フィールドの個別のリストを取得しようとしています。次のクエリでこれを行うために、集計フレームワークを利用しようとしていました。
db.posts_temp.aggregate(
{$unwind : '$categories'},
{$match : {'categories.parent' : 'MISCELLANEOUS'}},
{$project : {
'_id' : 0,
parent : '$categories.parent',
category : '$categories.category'
}
},
{
$group : {
_id : '$parent',
category : {$addToSet : '$category'}
}
}
);
このクエリを実行すると、次のエラーが返されます。
{
"errmsg" : "exception: $unwind: value at end of field path must be an array",
"code" : 15978,
"ok" : 0
}
これは、クエリのグループ部分に関連付けられているようです。これを削除すると、クエリは正しく実行されますが、明らかに、データが必要な場所にないためです。