MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

MongoDB $abs

W MongoDB $abs Operator potoku agregacji zwraca wartość bezwzględną liczby.

Przykład

Załóżmy, że mamy kolekcję o nazwie data z następującym dokumentem:

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

Możemy użyć $abs operator do zwracania wartości bezwzględnych a i b pola.

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

Wynik:

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

Wartości bezwzględne nie zawierają żadnych znaków, więc widzimy, że znak minus został usunięty z b wartość.

Możesz myśleć o wartości bezwzględnej liczby jako o odległości na osi liczbowej tej liczby od zera.

Wartości puste

Wartości null zwracają null podczas korzystania z $abs operatora.

Załóżmy, że do naszej kolekcji dodamy następujący dokument:

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

Uruchommy $abs operatora względem tego dokumentu:

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

Wynik:

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

Widzimy, że b rozwiązane do null .

Widzimy również, że 0 rozwiązuje się do 0 .

Wartości NaN

Jeśli argument kończy się na NaN , $abs zwraca NaN .

Przykład:

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

Wynik:

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

W tym przypadku próbowałem pomnożyć liczbę przez ciąg, co spowodowało NaN zostanie zwrócony.

Nieistniejące pola

Jeśli $abs operator jest stosowany do pola, które nie istnieje, null jest zwracany.

Przykład:

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

Wynik:

{ "c" : null }

W połączeniu z innymi operatorami

W tym przykładzie łączę $abs z $subtract w celu obliczenia wielkości różnicy między polami a i b :

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

Wynik:

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


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Jak wyświetlić listę wszystkich baz danych MongoDB w Node.js?

  2. MongoDB nie może znaleźć katalogu danych po aktualizacji do systemu Mac OS 10.15 (Catalina)

  3. MongoDB $ln

  4. Wymuszanie kontroli dostępu opartej na rolach za pomocą ClusterControl

  5. Używanie findOne w mongodb, aby uzyskać element o maksymalnym identyfikatorze