У меня есть данные в виде следующих документов ...
[
{
"_id":"5e93193f755fc5e74beb5e8f",
"orgs":[
{
"type":"NonEmployee",
"roles":[]
},
{
"type":"Founder",
"roles":[
{
"_id":"5e44fd4546b3954e6930e83d",
"name":"ADMIN"
},
{
"_id":"5e44fd4546b3954e6930e83e",
"name":"EMPLOYEE"
}
]
}
]
}
]
Интересующий меня запрос состоит в том, чтобы фильтровать документы на основе условий "ИЛИ" следующих ...
- Если он имеет тип как NonEmployee
- Если он играет роль в данном массиве, например. roleArray = ['EMPLOYEE']
Подзапрос в совокупности выглядит примерно так:
{
$match: {
$expr: {
$or: [
{
$in: ["$orgs.roles.name", rolesArray]
},
{
$eq: ['$orgs.type', 'NonEmployee']
}
]
}
}
}
Это дает результат в виде пустого массива, поскольку запрос неверен. Есть ли возможный способ добиться этого?