$setIsSubset (Verificar Relação de Subconjunto)
Última atualização: 2026-10-09
$setIsSubset (Verificar Relação de Subconjunto)
$setIsSubset verifica se todo elemento do primeiro array também aparece no segundo — ou seja, se o primeiro conjunto é um subconjunto do segundo. Usos típicos: verificar se as permissões de um usuário cobrem todas as permissões que uma operação exige, ou se todas as tags escolhidas pertencem a uma lista permitida. Um primeiro array vazio retorna true; um segundo array vazio com um primeiro não vazio retorna false. Elementos null são ignorados.
| Categoria | Conjunto, Condição e Conversão |
|---|---|
| Versão do MongoDB | 1.0+ |
| Idioma do Exemplo | mongosh (Shell) |
📝 Sintaxe
{ $setIsSubset: [ <arrayA>, <arrayB> ] }
⚙️ Parâmetros
| array A | O subconjunto candidato. |
|---|---|
| array B | O superconjunto. |
Retorno:true quando todo elemento de A está em B, caso contrário false
▶ Exemplo
Execute os comandos abaixo no seu mongosh local (requer um mongod em execução):
// $setIsSubset: todas as permissões selecionadas são permitidas
db.roles.aggregate([
{ $project: {
ok: { $setIsSubset: ['$selected', '$allowed'] }
} }
])
Saída:
{ '_id': 1, 'ok': true }
📌 Notas
- Um array vazio é subconjunto de todo conjunto, retornando true
- Um superconjunto vazio com um candidato não vazio retorna false
- Elementos null são ignorados
🏷️ Tags Relacionados
💡 Casos Relacionados
Mais casos práticos em breve.
📚 Tutoriais Relacionados
❓ Perguntas Frequentes
QO que um primeiro array vazio retorna?
Atrue — o conjunto vazio é subconjunto de todo conjunto.
QComo difere de $setEquals?
A$setIsSubset verifica contenção em um sentido; $setEquals verifica igualdade nos dois sentidos.
QA ordem afeta o resultado?
ANão — a semântica de conjunto ignora ordem.