Compartilhar via


$not (expressão booliana)

APLICA-SE A: MongoDB vCore

O $not operador retorna o valor booliano oposto da expressão. Ele executa uma operação NOT lógica em uma única expressão. Se a expressão for avaliada como true, $not retornará false. Se a expressão for avaliada como false, $not retornará true. Esse operador é útil para negar condições e localizar documentos que não atendam a critérios específicos.

Sintaxe

A sintaxe do operador é a $isArray seguinte:

{
  $not: <expression>
}

Parâmetros

Descrição
<expression> Uma única expressão a ser negada. O $not operador retorna o oposto lógico do valor booliano dessa expressão.

Exemplo

Exemplo 1: identificar lojas que não são de alto movimento

O exemplo localiza lojas que não têm um volume de vendas alto (não maior que 50.000).

db.stores.aggregate([
  {
    $project: {
      name: 1,
      totalSales: "$sales.salesByCategory.totalSales",
      isNotHighVolume: {
        $not: { $gt: ["$sales.salesByCategory.totalSales", 20000] }
      },
      storeCategory: {
        $cond: [
          { $not: { $gt: ["$sales.salesByCategory.totalSales", 20000] } },
          "Small-Medium Store",
          "High Volume Store"
        ]
      }
    }
  },
  { $limit: 2 }
])

A consulta identifica repositórios que não são operações de alto volume.

 {
    "_id": "905d1939-e03a-413e-a9c4-221f74055aac",
    "name": "Trey Research | Home Office Depot - Lake Freeda",
    "totalSales": [ 37978 ],
    "isNotHighVolume": false,
    "storeCategory": "High Volume Store"
  },
  {
    "_id": "a715ab0f-4c6e-4e9d-a812-f2fab11ce0b6",
    "name": "Lakeshore Retail | Holiday Supply Hub - Marvinfort",
    "totalSales": [ 25731 ],
    "isNotHighVolume": false,
    "storeCategory": "High Volume Store"
  }

Exemplo 2: Validar repositórios sem problemas de falta de pessoal

O exemplo identifica lojas que não têm problemas de falta de pessoal (não menos de 10 funcionários no total).

db.stores.aggregate([
  { $match: {"_id": "e6895a31-a5cd-4103-8889-3b95a864e5a6"} },
  {
    $project: {
      name: 1,
      totalStaff: { $add: ["$staff.employeeCount.fullTime", "$staff.employeeCount.partTime"] },
      isNotUnderstaffed: {
        $not: { $lt: [{ $add: ["$staff.employeeCount.fullTime", "$staff.employeeCount.partTime"] }, 10] }
      },
      staffingStatus: {
        $cond: [
          { $not: { $lt: [{ $add: ["$staff.employeeCount.fullTime", "$staff.employeeCount.partTime"] }, 10] } },
          "Adequately Staffed",
          "Understaffed"
        ]
      }
    }
  }
])

A consulta determina se a loja não está com falta de pessoal.

{
  "_id": "e6895a31-a5cd-4103-8889-3b95a864e5a6",
  "name": "VanArsdel, Ltd. | Picture Frame Store - Port Clevelandton",
  "totalStaff": 14,
  "isNotUnderstaffed": true,
  "staffingStatus": "Adequately Staffed"
}