Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /

$all (query predicado operador)

$all

La $all El operador selecciona los documentos donde el valor de un campo coincide con todos los valores especificados. Los documentos coincidentes pueden contener un campo con un valor que sea un arreglo que contenga todos los elementos especificados o un campo con un solo valor que coincida con el elemento especificado.

Puedes usar $all para implementaciones alojadas en los siguientes entornos:

  • MongoDB Atlas: El servicio totalmente gestionado para implementaciones de MongoDB en la nube

  • MongoDB Enterprise: La versión basada en suscripción y autogestionada de MongoDB

  • MongoDB Community: La versión de MongoDB con código fuente disponible, de uso gratuito y autogestionada.

Para especificar una expresión $all, utiliza el siguiente prototipo:

{ <field>: { $all: [ <value1> , <value2> ... ] } }

$all es equivalente a una operación de los valores especificados. Por ejemplo, las siguientes dos consultas son $and equivalentes:

{ tags: { $all: [ "ssl" , "security" ] } }
{ $and: [ { tags: "ssl" }, { tags: "security" } ] }

Cuando se pasa un arreglo de un arreglo anidado (p. ej., [ [ "A" ] ] ), $all coincide con los documentos donde el campo contiene el arreglo anidado como un elemento (p. ej., field: [ [ "A" ], ... ]), o el campo es igual al arreglo anidado (p. ej., field: [ "A" ]).

Por ejemplo, considera la siguiente consulta:

db.articles.find( { tags: { $all: [ [ "ssl", "security" ] ] } } )

La query es equivalente a:

db.articles.find( { $and: [ { tags: [ "ssl", "security" ] } ] } )

que es equivalente a:

db.articles.find( { tags: [ "ssl", "security" ] } )

Por lo tanto, la expresión $all coincide con los documentos donde el campo tags es un arreglo que contiene el arreglo anidado [ "ssl", "security" ] o es un arreglo que es igual al arreglo anidado:

tags: [ [ "ssl", "security" ], ... ]
tags: [ "ssl", "security" ]

Cuando se pasa un arreglo vacío, $all no coincide con ningún documento.

Los ejemplos de esta página utilizan datos del conjunto de datos de ejemplo sample_mflix. Para obtener más información sobre cómo cargar este conjunto de datos en su implementación de MongoDB autogestionada, consulte Cargar el conjunto de datos de ejemplo. Si realizó alguna modificación en las bases de datos de ejemplo, es posible que deba eliminarlas y volver a crearlas para ejecutar los ejemplos de esta página.

La siguiente operación utiliza el operador para consultar $all la movies colección en busca de documentos donde el valor del directors campo sea una matriz cuyos elementos incluyan John Murray Anderson Pèl Fejèsy:

db.movies.find( { directors: { $all: ['John Murray Anderson','Pèl Fejès'] } }, { title: 1, directors: 1, year: 1 })

La consulta anterior devuelve el siguiente documento:

[
{
_id: ObjectId('573a1391f29313caabcd9336'),
title: 'King of Jazz',
directors: [ 'John Murray Anderson', 'Pèl Fejès' ],
year: 1930
}
]

Para hacer coincidir varias condiciones en un solo elemento de la matriz, o en una matriz de documentos, puede usar $all con el $elemMatch operador.

La siguiente operación consulta la colección embedded_movies para obtener documentos donde:

  • Al menos un escritor tiene un crédito de story pero no un crédito de screenplay.

  • Al menos un escritor tiene un crédito de titles pero no un crédito de adaptation.

db.embedded_movies.find(
{ writers: { $all: [
{ $elemMatch: { $regex: '\\bstory\\b', $not: { $regex: '\\bscreenplay\\b' }}},
{ $elemMatch: { $regex: '\\btitles\\b', $not: { $regex: '\\badaptation\\b' }}}
]}},
{ title: 1, writers: 1, year: 1 })

La query devuelve los siguientes documentos:

[
{
"_id": {
"$oid": "573a1391f29313caabcd93a3"
},
"title": "Men Without Women",
"writers": [
"John Ford (story)",
"James Kevin McGuinness (story)",
"Dudley Nichols (screen play and scenario)",
"Otis C. Freeman (titles)"
],
"year": 1930
},
{
"_id": {
"$oid": "573a1391f29313caabcd8319"
},
"title": "For Heaven's Sake",
"writers": [
"Ted Wilde (story)",
"John Grey (story)",
"Clyde Bruckman (story)",
"Ralph Spence (titles)"
],
"year": 1926
},
{
"_id": {
"$oid": "573a1391f29313caabcd7bc3"
},
"title": "The Iron Horse",
"writers": [
"Charles Kenyon (story)",
"John Russell (story)",
"Charles Kenyon (scenario)",
"Charles Darnton (titles)"
],
"year": 1924
}
]

Nota

En la mayoría de los casos, MongoDB no trata los arreglos como conjuntos. Este operador constituye una excepción destacada a este enfoque.

Para obtener más ejemplos sobre la consulta de arreglos, consulte:

Para obtener ejemplos adicionales sobre query, consulta Documentos de query.

Tip

Volver

Arreglos

En esta página