Para agentes de IA: hay un índice de documentación disponible en https://www.mongodb.com/es/docs/llms.txt — versiones en markdown de todas las páginas están disponibles agregando .md a cualquier ruta URL.
Docs Menu

$anyElementTrue (operador de expresión)

$anyElementTrue

Evalúa un arreglo como un conjunto y devuelve true si alguno de los elementos es true y false en caso contrario. Un arreglo vacío devuelve false.

$anyElementTrue tiene la siguiente sintaxis:

{ $anyElementTrue: [ <expression> ] }

<expression> misma debe resolverse en un arreglo, haciendo que sea distinto del arreglo exterior que supone la lista de argumentos. Para obtener más información sobre expresiones, consulta Expresiones.

Si un conjunto contiene un elemento de matriz anidada, $anyElementTrue no desciende a la matriz anidada, sino que evalúa la matriz en el nivel superior.

Además del false valor booleano, evalúa$anyElementTrue como false los siguientes valores:, null 0 undefined y. El evalúa todos los demás $anyElementTrue valores true como, incluidos los valores numéricos distintos de cero y las matrices.

Ejemplo
Resultado

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

true

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

true

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

false

{ $anyElementTrue: [ [ ] ] }

false

Crea una colección de ejemplo llamada 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 el responses array contiene algún valor que se 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 del arreglo responses se evalúa como true.

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

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

Califique esta página