arrayにパイプラインステージを配置する必要があります。つまり、ドキュメントは順番にステージを通過します。
db.collection.aggregate([ { <stage> }, ... ])
$group
パイプラインステップ演算子はない$match
パイプラインステップの一部として、独自のオブジェクト/文書であるべきです。あなた集計パイプラインは
db.audiofiles.aggregate([
/* match pipeline */
{
"$match": {
"privacy": { "$ne": "same" },
"date": { "$eq": "2017/04/25" },
"deleted": 0
}
},
/* group pipeline */
{
"$group": {
"_id": "$to_email",
"count": { "$sum": 1 }
}
}
]);
であるか、あなたは配列にプッシュすることができ、オブジェクト変数としてパイプラインステップを作成し、その配列は、aggregate()
メソッドの引数として使用するためのパイプラインになっ必要があります。
/* match pipeline */
var match = {
$match: {
privacy: { $ne: "same" },
date: { "$eq": "2017/04/25" },
deleted: 0
}
},
/* group pipeline */
group = {
$group: {
"_id": "$to_email",
"count": { "$sum": 1 }
}
};
db.audiofiles.aggregate([match, group]);
上記の応答が得られない場合は、1ステップで集約パイプラインを実行してみてください。
db.audiofiles.aggregate([match]);
マッチステップの結果は次のステージにパイプされるので、結果が得られない場合、$match
パイプラインステップで一致するドキュメントが見つかりませんでした。いくつかのパラメータを変更して結果があるかどうかを確認します。
パイプラインは配列です。カッコ間に角括弧を追加します。 –
db.audiofiles.aggregate({[$ {match:{{$ ne: "same"}、date:{"$ eq": "2017/04/25"}、deleted:0]}、$ group: {"_id": "$ to_email"}}}); 計算されたプロパティ名@(シェル)のエラー: - > 2017-04-24T14:46:37.021 + 0530 E QUERY [thread1] SyntaxError:missing]:1:32 – Jagadeesh