Compartir a través de


$all (consulta de matriz)

SE APLICA A: núcleo virtual de MongoDB

El $all operador se usa para seleccionar documentos donde el valor de un campo es una matriz que contiene todos los elementos especificados. Este operador es útil cuando necesita asegurarse de que un campo de matriz contiene varios elementos especificados, independientemente de su orden en la matriz.

Sintaxis

db.collection.find({ <field>: { $all: [ <value1> , <value2> ... ] } })

Parámetros

Descripción
field Campo que se va a consultar.
<value1> , <value2> Los valores que deben estar presentes en el campo de matriz.

Ejemplo

{
  "_id": "a57511bb-1ea3-4b26-bf0d-8bf928f2bfa8",
  "name": "Wide World Importers",
  "location": {
    "lat": 68.6378,
    "lon": -145.2852
  },
  "staff": {
    "totalStaff": {
      "fullTime": 1,
      "partTime": 5
    }
  },
  "sales": {
    "totalSales": 23399,
    "salesByCategory": [
      {
        "categoryName": "Smartphones",
        "totalSales": 5231
      },
      {
        "categoryName": "Laptops",
        "totalSales": 18168
      }
    ]
  },
  "promotionEvents": [
    {
      "eventName": "Unbeatable Bargain Bash",
      "promotionalDates": {
        "startDate": {
          "Year": 2023,
          "Month": 5,
          "Day": 17
        },
        "endDate": {
          "Year": 2023,
          "Month": 5,
          "Day": 25
        }
      },
      "discounts": [
        {
          "categoryName": "Video Games",
          "discountPercentage": 20
        },
        {
          "categoryName": "Tablets",
          "discountPercentage": 18
        }
      ]
    }
  ],
  "tag": [
    "#ShopLocal",
    "#FashionStore",
    "#SeasonalSale",
    "#FreeShipping",
    "#MembershipDeals"
  ]
}

Ejemplo 1: Buscar documentos que contengan todos los elementos especificados en una matriz

En el ejemplo se permite consultar la stores colección para buscar documentos que contengan elementos Laptops y Smartphones dentro salesByCategory.categoryName de la matriz.

db.stores.find(
    { "sales.salesByCategory.categoryName": { $all: ["Laptops", "Smartphones"]} },
    { _id: 1, "sales.salesByCategory.categoryName": 1 }
).limit(2)

La consulta devuelve los dos documentos que contienen y LaptopsSmartphones dentro de salesCategory la matriz.

  {
    "_id": "a57511bb-1ea3-4b26-bf0d-8bf928f2bfa8",
    "sales": {
      "salesByCategory": [
        {
          "categoryName": "Smartphones"
        },
        {
          "categoryName": "Laptops"
        }
      ]
    }
  },
  {
    "_id": "ca56d696-5208-40c3-aa04-d4e245df44dd",
    "sales": {
      "salesByCategory": [
        {
          "categoryName": "Laptops"
        },
        {
          "categoryName": "Smartphones"
        }
      ]
    }
  }