У меня есть следующая модель:
{
"_id" : ObjectId("...some id"),
"lessons" : [
{
"date" : ISODate("2019-09-23T16:00:00.000+02:00"),
"subject" : [
"Javascript",
"Order"
],
"price" : 60
},
{
"date" : ISODate("2019-09-24T16:00:00.000+02:00"),
"subject" : [
"Javascript"
],
"price" : 120
}
]
}
Я бы хотел отфильтровать массив «уроки» на основе значения во вложенном массиве «субъект».Фильтр, я имею в виду удалить весь объект из массива «уроки», если, например, значение во вложенном массиве «субъект» не равно значению «Порядок».
Ожидаемый результат (удалить объект, поскольку вложенный массив содержит значение «Порядок»)):
{
"_id" : ObjectId("...some id"),
"lessons" : [
{
"date" : ISODate("2019-09-24T16:00:00.000+02:00"),
"subject" : [
"Javascript"
],
"price" : 120
}
]
}
Я пытался использовать конвейер $ filter, но он перезаписывает весь "урок" массива.
db.students.aggregate([
{
$project: {
"lessons": {
$filter: {
input: "$lessons.subject",
as: "subject",
cond: {
$ne: [
"$$subject",
"Order"
]
}
}
}
}
},
]);