Ich habe eine Sammlung "Studenten".Wie bekomme ich ein Feld in Objekten?
{
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"},
]
}
Und ich möchte alle Punkte des Fachs "Math" des Schülers bekommen.
Im aggregation
mit
db.collection('studens').aggregate([
{$match: {"subjects.subject" : "Math" } },
{$project: {
_id:0,
subjects: {
$filter: {
input: "$subjects",
as: "subject",
cond: { $lte: [ "$$subject.subject", "Math" ] }
}
}
}
}
]);
Und das Ergebnis zu erhalten:
{subject:"Math",teacher:"Linda","score":"82"}
{subject:"Math",teacher:"Hilary","score":"52"}
Aber es alle Felder zeigen, und ich möchte das Ergebnis (nur zeigen Thema und Gäste):
{subject:"Math","score":"82"}
{subject:"Math","score":"52"}
Wie geht das? Bitte helfen Sie mir.
Ok, gut ich Ihre Aggregation nur testen .. Ich bin immer: ' "Ergebnis": [{ "Themen": [ // alle Werte ] }, { "Themen": [ // alle Werte auch Englisch und anderes Thema ] } ] 'Ist das was du bekommst? – rahpuser
Ändern Sie die Bedingung in $ eq und jetzt Im nur Math Betreff Dokumente bekommen .. Ist dies die Ausgabe, die Sie suchen? Ausschluss von Werten wird nicht unterstützt, also .. Sie könnten wahrscheinlich mit einer anderen Projektion versuchen, die Einbeziehung von Feldern – rahpuser