sql >> Databasteknik >  >> NoSQL >> MongoDB

MongoDB $type Aggregation Pipeline Operator

I MongoDB, $type aggregeringspipeline-operatören returnerar BSON-typen för sitt argument.

Du kan använda den för att ta reda på typen av ett givet fält.

Exempel

Anta att vi har en samling som heter cats med följande dokument:

{ "_id" :ObjectId("60173c09c8eb4369cf6ad9e0"), "name" :"Scratch", "born" :ISODate("2021-01-03T23:30:15.123Z"), "weight" :30 /pre> 

Vi kan använda följande kod för att returnera typerna av dessa fält:

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

Resultat:

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

Exempel 2

Här är ett annat exempel som innehåller olika fält med olika BSON-typer.

Vi har en samling som heter types med följande dokument:

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

För syftet med den här artikeln har jag döpt varje fält för att återspegla dess BSON-typ.

Vi kan nu använda följande kod för att returnera typerna av dessa fält:

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() 

Resultat:

{ "_id" :"objectId", "double" :"double", "string" :"string", "boolean" :"bool", "date" :"date", "integer" :"int ", "long" :"long", "decimal" :"decimal", "object" :"objekt", "array" :"array"}

Filtrering efter typ

Det finns också en $type elementfrågeoperator som låter dig filtrera en samling dokument baserat på BSON-typ.

Sök efter siffror

Om du bara vill kontrollera om ett värde är ett tal, se MongoDB $isNumber .


  1. Meteor:ladda upp fil från klient till Mongo-samling vs filsystem vs GridFS

  2. Mongodb -- inkludera eller exkludera vissa element med c#-drivrutinen

  3. Hur tillämpar man begränsningar i MongoDB?

  4. Visuell hantering av MongoDB-dokument och samlingar