I'm attempting to build a query using MongoDB, however I'm coming up against an issue where I am unable to filter an array within an array.
In my example below I am attempting to retrieve elements in the child data array within the parent list array, where the key systemDelete_DT is null.
I've attempted to use $eq: ["$$s_lists.customData.systemDelete_DT", null] as the filter condition, however no results load.
I am using $filter as this is part of larger aggregate with a $lookup.
How do I only retrieve results from the data array where the key systemDelete_DT is null?
My Query
db.collection.aggregate([
{
$lookup: {
from: "s_list",
localField: "_id",
foreignField: "_id",
as: "s_lists"
}
},
{
$project: {
list: {
$filter: {
input: {
$arrayElemAt: [
"$s_lists.list",
0
]
},
as: "s_lists",
cond: {
**// Note: This condition works as expected**
$eq: [
"$$s_lists.systemDelete_DT",
null
],
}
}
}
}
}
])
Expected Result:
[
{
"_id": ObjectId("6099619baa04f15c3fb67a83"),
"list": [
{
"_id": ObjectId("609e70be503c58506ca77d3d"),
"data": [
{
"_id": ObjectId("609e70be503c58506ca77d41"),
"field_id": ObjectId("609c00d6de4c601e4fa358d8"),
"systemDelete_DT": null
},
{
"_id": ObjectId("609e936024c6a45adc030a4c"),
"field_id": ObjectId("609e936024c6a45adc030a4b"),
"systemDelete_DT": null
}
],
"systemDelete_DT": null
}
]
}
]
Database Example:
db={
"collection": [
{
"_id": ObjectId("6099619baa04f15c3fb67a83")
}
],
"s_list": [
{
"_id": ObjectId("6099619baa04f15c3fb67a83"),
"systemDelete_DT": null,
"list": [
{
"_id": ObjectId("609e6ee1955f7b4fbd73fcb5"),
"systemDelete_DT": "2021-05-14T18:13:18+01:00",
"data": [
{
"_id": ObjectId("609e6ee1955f7b4fbd73fcb6"),
"systemDelete_DT": "2021-05-14T18:13:18+01:00",
"field_id": ObjectId("609bbeb0f1033c156f8e4d86"),
},
{
"_id": ObjectId("609e6ee1955f7b4fbd73fcb9"),
"systemDelete_DT": null,
"field_id": ObjectId("609c00d6de4c601e4fa358d8"),
},
{
"_id": ObjectId("609e936024c6a45adc030a4c"),
"systemDelete_DT": null,
"field_id": ObjectId("609e936024c6a45adc030a4b"),
}
]
},
{
"_id": ObjectId("609e70be503c58506ca77d3d"),
"systemDelete_DT": null,
"data": [
{
"_id": ObjectId("609e70be503c58506ca77d3e"),
"systemDelete_DT": "2021-05-14T18:13:18+01:00",
"field_id": ObjectId("609bbeb0f1033c156f8e4d86"),
},
{
"_id": ObjectId("609e70be503c58506ca77d41"),
"systemDelete_DT": null,
"field_id": ObjectId("609c00d6de4c601e4fa358d8"),
},
{
"_id": ObjectId("609e936024c6a45adc030a4c"),
"systemDelete_DT": null,
"field_id": ObjectId("609e936024c6a45adc030a4b"),
}
]
}
]
}
]
}