Teraz walczę z redact i nie jestem pewien, aby to zrozumieć.Redact in mongodb wydaje mi się niejasny
Właśnie przeczytałem docs i próbował użyć redagować on a klasach zbiórki (chodzi z MongoDB szkolenia online)
dokument w zbiorze "klas" wygląda następująco:
{
"_id" : ObjectId("50b59cd75bed76f46522c34e"),
"student_id" : 0,
"class_id" : 2,
"scores" : [
{
"type" : "exam",
"score" : 57.92947112575566
},
{
"type" : "quiz",
"score" : 21.24542588206755
},
{
"type" : "homework",
"score" : 68.19567810587429
},
{
"type" : "homework",
"score" : 67.95019716560351
},
{
"type" : "homework",
"score" : 18.81037253352722
}
]
}
I użyj następującego zapytania:
db.grades.aggregate([
{ $match: { student_id: 0 } },
{
$redact: {
$cond: {
if: { $eq: [ "$type" , "exam" ] },
then: "$$PRUNE",
else: "$$DESCEND"
}
}
}
] );
W tej kwerendzie każdy typ egzaminu zostaje znaleziony, ten pod-dokument powinien zostać wykluczony. I to działa, wynik jest:
{
"_id" : ObjectId("50b59cd75bed76f46522c34e"),
"student_id" : 0,
"class_id" : 2,
"scores" : [
{
"type" : "quiz",
"score" : 21.24542588206755
},
{
"type" : "homework",
"score" : 68.19567810587429
},
{
"type" : "homework",
"score" : 67.95019716560351
},
{
"type" : "homework",
"score" : 18.81037253352722
}
]
}
ale jeśli odwrócić sytuację, spodziewam się, że tylko egzaminy są przechowywane w wyniku:
if: { $eq: [ "$type" , "exam" ] },
then: "$$DESCEND",
else: "$$PRUNE"
jednak wynik jest pusta.
Nie rozumiem, dlaczego nie uwzględniono podtypu dokumentu "egzamin".
Kolejna praca domowa uniwersytetu mongodb. – styvane
@ user3100115 Zadania domowe nie muszą być złymi pytaniami, o ile są napisane w sposób, który wymaga wglądu, a nie tylko gotowego rozwiązania, które dostaje ocenę wystarczająco dobrą. – Philipp
@Philipp Jednakże wiem z doświadczenia z pierwszej ręki, że uczniowie uczą się każdego kroku w dość długi sposób. Szczegółowe, dodam, a dokumentacja też nie jest zła. Z mojego punktu widzenia celem każdej z klas jest dostarczenie studentowi wystarczających informacji, aby dokumentacja stała się mniej lub bardziej przypomnieniem. W tym kontekście pytanie wraz z istniejącym zapytaniem wydaje się trochę ... ... arbitralne dla mnie. –