MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

MongoDB $cond

В MongoDB, $cond Операторът на конвейера за агрегиране оценява булев израз и връща един от двата посочени израза за връщане, в зависимост от това дали булевият израз е true или false .

$cond операторът приема два синтаксиса:синтаксис на дълга ръка и синтаксис на стенография. Примери за всеки са по-долу.

Пример

Да предположим, че имаме колекция, наречена pets със следния документ:

{
	"_id" : 1,
	"name" : "Fetch",
	"type" : "Dog",
	"weight" : 20,
	"height" : 30
}

Синтаксис на дълга ръка

Ето пример за прилагане на $cond към този документ, използвайки синтаксиса на дълга ръка:

db.pets.aggregate(
  [
    { $project: { 
        _id: 0,
        isCanine: { 
          $cond: { if: { "$type": "Dog" }, then: "Yes", else: "No" }
          }
      }
    }
  ]
)

Резултат:

{ "isCanine" : "Yes" }

В този пример сравнихме type поле до буквална стойност.

В следващия пример сравняваме две полета в документа.

db.pets.aggregate(
  [
    { $project: { 
        _id: 0,
        bodyType: { 
          $cond: { 
            if: { 
              $gte: [ "$weight", "$height" ] }, 
              then: "Fat", 
              else: "Skinny" 
              }
          }
      }
    }
  ]
)

Резултат:

{ "bodyType" : "Skinny" }

Стенически синтаксис

$cond операторът също така приема съкратен синтаксис, който прави кода ви по-сбит.

Съкращението основно включва премахване на if , then и else ключови думи.

Когато направите това, трябва да затворите изразите в масив.

В този пример пренаписваме първия пример, за да използваме съкратения синтаксис:

db.pets.aggregate(
  [
    { $project: { 
        _id: 0,
        isCanine: { 
          $cond: [ { "$type": "Dog" }, "Yes", "No" ]
          }
      }
    }
  ]
)

Резултат:

{ "isCanine" : "Yes" }

А ето и вторият пример, използващ стенография:

db.pets.aggregate(
  [
    { $project: { 
        _id: 0,
        bodyType: { 
          $cond: [
              { $gte: [ "$weight", "$height" ] }, 
              "Fat", 
              "Skinny" 
              ]
          }
      }
    }
  ]
)

Резултат:

{ "bodyType" : "Skinny" }

  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Групиране по условие в MongoDB

  2. Регистриране на одит за MongoDB

  3. Как работи hideIndex() в MongoDB

  4. Как да върна актуализиран документ от метода findOneAndUpdate?

  5. Разбиране и управление на дисковото пространство на вашия MongoDB сървър