私はコレクションを持っており、コレクション内の各ドキュメントに配列フィールドcountries
があります。私は、以下の国のいずれかを含むすべての文書を選択します:一致する配列要素を探す方法
China, USA, Australia
、出力は各ドキュメントが持つ上記の国の数が表示されるはずです。 は、私は、集約コマンドの下に使用します。
db.movies.aggregate([
{
$match: { countries: { $in: ["USA", 'China', 'Australia'] } }
},
{
$project: {
countries: {$size: '$countries'}
}
}
]);
期待どおりに動作しません。上に挙げた国の文書のすべての国の番号が表示されます。たとえば、文書にcountries
フィールドにChina, Japan
がある場合は、上記の国リストにはしか含まれていないため、1を返すと予想しましたが、2が返されます。どのようにして集約コマンドでそれを行うことができますか?
の結果を「設定」、感謝されるであろう、
"USA"
ため2
をカウントする必要がありました。 –