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

MongoDB $type Оператор на конвейер за агрегиране

В MongoDB, $type Операторът на конвейера за агрегиране връща BSON типа на своя аргумент.

Можете да го използвате, за да разберете типа на дадено поле.

Пример

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

{ "_id" :ObjectId("60173c09c8eb4369cf6ad9e0"), "name" :"Scratch", "born" :ISODate("2021-01-03T23:30:15.123Z"), "weight" :30 /предварително> 

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

db.cats.aggregate(
  [
    {
      $project:
        { 
          _id: { $type: "$_id" },
          name: { $type: "$name" },
          born: { $type: "$born" },
          weight: { $type: "$weight" }
        }
    }
  ]
).pretty() 

Резултат:

{ "_id" :"objectId", "name" :"string", "born" :"date", "weight" :"double"}

Пример 2

Ето още един пример, който съдържа различни полета с различни типове BSON.

Имаме колекция, наречена types със следния документ:

{ "_id" :ObjectId("601738d7c8eb4369cf6ad9de"), "double" :123.75, "string" :"123", "boolean" :true, "date" :ISODate("2020-12-30:31:15.123Z"), "integer" :123, "long" :NumberLong(123), "decimal" :NumberDecimal("123.75"), "object" :{ "a" :1 }, "array" :[ 1, 2, 3 ]}

За целите на тази статия наименувах всяко поле, за да отразява неговия тип BSON.

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

db.types.aggregate(
  [
    {
      $project:
        { 
          _id: { $type: "$_id" },
          double: { $type: "$double" },
          string: { $type: "$string" },
          boolean: { $type: "$boolean" },
          date: { $type: "$date" },
          integer: { $type: "$integer" },
          long: { $type: "$long" },
          decimal: { $type: "$decimal" },
          object: { $type: "$object" },
          array: { $type: "$array" }
        }
    }
  ]
).pretty() 

Резултат:

{ "_id" :"objectId", "double" :"double", "string" :"string", "boolean" :"bool", "date" :"date", "integer" :"int ", "long" :"дълъг", "десетичен" :"десетичен", "object" :"обект", "масив" :"масив"}

Филтриране по тип

Има и $type оператор за заявка за елемент, който ви позволява да филтрирате колекция от документи въз основа на тип BSON.

Проверка за числа

Ако просто искате да проверите дали дадена стойност е число, вижте MongoDB $isNumber .


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB $cmp

  2. Многоезично моделиране на данни в MongoDB

  3. Методът за намиране на Mongoose с $или условие не работи правилно

  4. Mongodump от отдалечен сървър

  5. MongoDB findOneAndReplace()