sql >> Database teknologi >  >> NoSQL >> MongoDB

MongoDB $abs

I MongoDB er $abs aggregeringspipeline-operatør returnerer den absolutte værdi af et tal.

Eksempel

Antag, at vi har en samling kaldet data med følgende dokument:

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

Vi kan bruge $abs operator for at returnere de absolutte værdier af a og b felter.

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

Resultat:

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

Absolutte værdier inkluderer ikke nogen tegn, og så vi kan se, at det negative tegn er blevet fjernet fra b værdi.

Du kan tænke på en absolut værdi af et tal som værende afstanden på tallinjen mellem det tal fra nul.

Nul-værdier

Nul-værdier returnerer null når du bruger $abs operatør.

Antag, at vi tilføjer følgende dokument til vores samling:

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

Lad os køre $abs operatør mod dette dokument:

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

Resultat:

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

Vi kan se, at b løst til null .

Vi kan også se, at 0 løses til 0 .

NaN-værdier

Hvis argumentet løses til NaN , $abs returnerer NaN .

Eksempel:

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

Resultat:

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

I dette tilfælde forsøgte jeg at multiplicere et tal med en streng, hvilket resulterede i NaN bliver returneret.

Ikke-eksisterende felter

Hvis $abs operator anvendes mod et felt, der ikke eksisterer, null er returneret.

Eksempel:

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

Resultat:

{ "c" : null }

Kombineret med andre operatører

I dette eksempel kombinerer jeg $abs med $subtract for at beregne størrelsen af ​​forskellen mellem felterne a og 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. MongoDB:Find minimumselementet i array og slet det

  2. Hvordan kan jeg bruge MongoDB med Flask?

  3. redis cluster reshard [ERR] Kalder MIGRATE:ERR Syntaksfejl

  4. python-rq worker lukker automatisk