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 expresiones, consulta Expresiones.
Comportamiento
Si un conjunto contiene un elemento de matriz anidada, $allElementsTrue no desciende a la matriz anidada, sino que evalúa la matriz en el nivel superior.
Además del false valor booleano, evalúa$allElementsTrue como false los siguientes valores:, null 0 undefined y. El evalúa todos los demás $allElementsTrue valores true como, incluidos los valores numéricos distintos de cero y las matrices.
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 el responses array solo contiene valores que se 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 }