Docs Menu
Docs Home
/ /

$anyElementTrue (operador de expresión)

$anyElementTrue

Evalúa una matriz como un conjunto y devuelve true si alguno de sus elementos es true y false en caso contrario. Una matriz vacía devuelve false.

$anyElementTrue tiene 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.

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

{ $anyElementTrue: [ [ true, false ] ] }

true

{ $anyElementTrue: [ [ [ false ] ] ] }

true

{ $anyElementTrue: [ [ null, false, 0 ] ] }

false

{ $anyElementTrue: [ [ ] ] }

false

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: 1 es true porque el elemento dentro de la matriz responses se evalúa como true.

  • Los documentos con _id: 2 y _id: 4 son true porque al menos un elemento dentro de la matriz responses se evalúa como true.

  • Los documentos con _id: 6, _id: 7 y _id: 8 son true porque la matriz responses, que es la matriz que $anyElementTrue evaluó para la operación, contiene una matriz anidada, que $anyElementTrue siempre evalúa como true.

Volver

$and

En esta página