Definición
$allElementsTrueEvalúa un arreglo como un conjunto y devuelve
truesi ningún elemento del arreglo esfalse. En caso contrario, devuelvefalse. Un arreglo vacío devuelvetrue.$allElementsTruetiene la siguiente sintaxis:{ $allElementsTrue: [ <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 las expresiones, consultar expresión.
Comportamiento
Si un conjunto contiene un elemento de arreglo anidado, $allElementsTrue no desciende al arreglo anidado, sino que evalúa el arreglo en el nivel superior.
Además del valor booleano false, $allElementsTrue se evalúa como false lo siguiente: null, 0 y valores undefined. La $allElementsTrue evalúa todos los demás valores como true, incluyendo valores numéricos distintos de cero y arreglos.
Ejemplo | Resultado |
|---|---|
|
|
|
|
|
|
|
|
Ejemplo
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 $allElementsTrue la responses matriz solo contiene valores que evalúan true como:
db.survey.aggregate( [ { $project: { responses: 1, isAllTrue: { $allElementsTrue: [ "$responses" ] }, _id: 0 } } ] )
La operación devuelve los siguientes resultados:
{ "responses" : [ true ], "isAllTrue" : true } { "responses" : [ true, false ], "isAllTrue" : false } { "responses" : [ ], "isAllTrue" : true } { "responses" : [ 1, true, "seven" ], "isAllTrue" : true } { "responses" : [ 0 ], "isAllTrue" : false } { "responses" : [ [ ] ], "isAllTrue" : true } { "responses" : [ [ 0 ] ], "isAllTrue" : true } { "responses" : [ [ false ] ], "isAllTrue" : true } { "responses" : [ null ], "isAllTrue" : false } { "responses" : [ undefined ], "isAllTrue" : false }