Definición
$anyElementTrueEvalúa una matriz como un conjunto y devuelve
truesi alguno de sus elementos estrueyfalseen caso contrario. Una matriz vacía devuelvefalse.$anyElementTruetiene la siguiente sintaxis:{ $anyElementTrue: [ <expression> ] } El
<expression>debe resolverse en una matriz, independiente de la matriz externa que representa la lista de argumentos. Para más información sobre expresiones, consulte Expresiones.
Comportamiento
Si un conjunto contiene un elemento de arreglo anidado, $anyElementTrue no desciende al arreglo anidado, sino que evalúa el arreglo en el nivel superior.
Además del false valor booleano, evalúa$anyElementTrue como false los siguientes valores:, null 0 undefined y. evalúa como todos los demás $anyElementTrue valores,true incluidos los valores numéricos y las matrices distintos de cero.
Ejemplo | Resultado |
|---|---|
|
|
|
|
|
|
|
|
Ejemplo
Cree una colección de ejemplo denominada survey con los siguientes documentos:
db.survey.insertMany( [ { _id: 1, responses: [ true ] }, { _id: 2, responses: [ true, false ] }, { _id: 3, responses: [ ] }, { _id: 4, responses: [ 1, true, "seven" ] }, { _id: 5, responses: [ 0 ] }, { _id: 6, responses: [ [ ] ] }, { _id: 7, responses: [ [ 0 ] ] }, { _id: 8, responses: [ [ false ] ] }, { _id: 9, responses: [ null ] }, { _id: 10, responses: [ undefined ] } ] )
La siguiente operación utiliza el operador para determinar si $anyElementTrue la responses matriz contiene algún valor que evalúe true como:
db.survey.aggregate( [ { $project: { responses: 1, isAnyTrue: { $anyElementTrue: [ "$responses" ] }, _id: 1 } } ] )
[ { _id: 1, responses: [ true ], isAnyTrue: true }, { _id: 2, responses: [ true, false ], isAnyTrue: true }, { _id: 3, responses: [], isAnyTrue: false }, { _id: 4, responses: [ 1, true, 'seven' ], isAnyTrue: true }, { _id: 5, responses: [ 0 ], isAnyTrue: false }, { _id: 6, responses: [ [] ], isAnyTrue: true }, { _id: 7, responses: [ [ 0 ] ], isAnyTrue: true }, { _id: 8, responses: [ [ false ] ], isAnyTrue: true }, { _id: 9, responses: [ null ], isAnyTrue: false }, { _id: 10, responses: [ null ], isAnyTrue: false } ]
En los resultados:
El documento con
_id: 1estrueporque el elemento dentro de la matrizresponsesse evalúa comotrue.Los documentos con
_id: 2y_id: 4sontrueporque al menos un elemento dentro de la matrizresponsesse evalúa comotrue.Los documentos con
_id: 6,_id: 7y_id: 8sontrueporque la matrizresponses, que es la matriz que$anyElementTrueevaluó para la operación, contiene una matriz anidada, que$anyElementTruesiempre evalúa comotrue.