私は "Students"というコレクションを持っています。オブジェクトの一部のフィールドを取得するには?
{
student:"Jone Doe",
class:"A",
subjects:
[
{subject:"Math",teacher:"Linda","score":"82"},
{subject:"English",teacher:"Jone","score":"52"},
{subject:"History",teacher:"Maria","score":"32"},
]
}
{
student:"Baby Doe",
class:"B",
subjects:
[
{subject:"Math",teacher:"Hilary","score":"52"},
{subject:"English",teacher:"Notham","score":"52"},
{subject:"History",teacher:"Hamet","score":"32"},
]
}
そして、私は学生の科目「数学」をすべて取得したいと思います。
:結果(のみ対象示し、スコア)に{subject:"Math",teacher:"Linda","score":"82"}
{subject:"Math",teacher:"Hilary","score":"52"}
しかし、それはすべてのフィールドを示し、そして私が欲しい:
db.collection('studens').aggregate([
{$match: {"subjects.subject" : "Math" } },
{$project: {
_id:0,
subjects: {
$filter: {
input: "$subjects",
as: "subject",
cond: { $lte: [ "$$subject.subject", "Math" ] }
}
}
}
}
]);
そして結果を得るためにaggregation
を使用して
イム
{subject:"Math","score":"82"}
{subject:"Math","score":"52"}
これを行う方法? 私を助けてください。
[OK]を、よく私はちょうどあなたの集計をテスト..私は取得しています: ' "結果":[ { "科目":[ //すべての値 ] }、 { "科目":[ //すべての値が英語と他のサブジェクト ] } ]これはあなたが得ているものですか? – rahpuser
条件を$ eqに変更して、今では数学の対象文書を取得しています。これはあなたが探している出力ですか?値の除外はサポートされていません。したがって、おそらく、サポートのおかげで – rahpuser