mongodb 集約フレームワークのパイプラインがどのように機能するかについて、根本的な誤解があるかもしれません。私の期待は、各ステップが前のステップの出力を消費することです。http://media.mongodb.org/zips.jsonで提供されているサンプル コレクションを使用した具体的な例を次に示します。
> db.zipcodes.aggregate({$match:{state:"CA"}});
このような結果を生み出します。
{
"city" : "TRUCKEE",
"loc" : [
-120.295031,
39.319321
],
"pop" : 199,
"state" : "CA",
"_id" : "96162"
}
ここまでは順調ですね。次に、次を実行して、上記の投影を取得する別のステップを追加することにしました。
> db.zipcodes.aggregate({
$match:{state:"CA"},
$project: {city: 1, pop: 1, state: 1}
});
プロジェクションは機能しますが、最初の $match ステップは無視されます。これは元の入力に基づいており、状態が != CA であるドキュメントが含まれています。
{
"city" : "THAYNE",
"pop" : 505,
"state" : "WY",
"_id" : "83127"
}
私の予想は間違っていたのでしょうか、それとも構文の問題を見ずにじっと見つめていたのでしょうか? バージョン 2.2.0 を実行しています。
> db.version();
2.2.0
サンプルクエリは機能しているようです。
前もって感謝します。