sql >> Databasteknik >  >> NoSQL >> MongoDB

MongoDB $abs

I MongoDB, $abs aggregeringspipeline-operatören returnerar det absoluta värdet av ett tal.

Exempel

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

{ "_id" : 1, "a" : 20, "b" : -20 }

Vi kan använda $abs operatorn för att returnera de absoluta värdena för a och b fält.

db.data.aggregate(
  [
    { $project: { 
        _id: 0,
        a: { $abs: [ "$a" ] },
        b: { $abs: [ "$b" ] }
      }
    }
  ]
)

Resultat:

{ "a" : 20, "b" : 20 }

Absoluta värden innehåller inga tecken, så vi kan se att det negativa tecknet har tagits bort från b värde.

Du kan tänka dig att ett absolut värde för ett tal är avståndet, på tallinjen, för det talet från noll.

Nullvärden

Nullvärden returnerar null när du använder $abs operatör.

Anta att vi lägger till följande dokument i vår samling:

{ "_id" : 2, "a" : 0, "b" : null }

Låt oss köra $abs operatör mot det dokumentet:

db.data.aggregate(
  [
    { $match: { _id: 2 } },
    { $project: { 
        _id: 0,
        a: { $abs: [ "$a" ] },
        b: { $abs: [ "$b" ] }
      }
    }
  ]
)

Resultat:

{ "a" : 0, "b" : null }

Vi kan se att b löst till null .

Vi kan också se att 0 löser sig till 0 .

NaN-värden

Om argumentet löser sig till NaN , $abs returnerar NaN .

Exempel:

db.data.aggregate(
  [
    { $match: { _id: 2 } },
    { $project: { 
        _id: 0,
        a: { $abs: [ "$a" ] },
        b: { $abs: [ 1 * "g" ] }
      }
    }
  ]
)

Resultat:

{ "a" : 0, "b" : NaN }

I det här fallet försökte jag multiplicera ett tal med en sträng, vilket resulterade i NaN returneras.

Icke-existerande fält

Om $abs operatorn tillämpas mot ett fält som inte finns, null returneras.

Exempel:

db.data.aggregate(
  [
    { $match: { _id: 2 } },
    { $project: { 
        _id: 0,
        c: { $abs: [ "$c" ] }
      }
    }
  ]
)

Resultat:

{ "c" : null }

Kombinerat med andra operatörer

I det här exemplet kombinerar jag $abs med $subtract för att beräkna storleken på skillnaden mellan fälten a och b :

db.data.aggregate(
  [
    { $match: { _id: 1 } },
    { $project: { 
        _id: 0,
        a: 1,
        b: 1,
        result: { 
          $abs: { 
            $subtract: [ "$a", "$b" ] 
            }
        }
      }
    }
  ]
)

Resultat:

{ "a" : 20, "b" : -20, "result" : 40 }


  1. Hur man får det korta månadsnamnet i SQL

  2. MongoDB Aggregationsoperatörer för returdatumdelar

  3. Jämföra MongoDB-prestanda på offentliga moln:AWS, Azure och DigitalOcean

  4. MongoDB dra element från array två nivåer djup