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

MongoDB $abs

В MongoDB, $abs Операторът на конвейера за агрегиране връща абсолютната стойност на число.

Пример

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

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

Можем да използваме $abs оператор за връщане на абсолютните стойности на a и b полета.

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

Резултат:

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

Абсолютните стойности не включват никакви знаци и така можем да видим, че отрицателният знак е премахнат от b стойност.

Можете да мислите за абсолютна стойност на число като разстоянието на числовата права до това число от нулата.

Нулеви стойности

Нулевите стойности връщат null когато използвате $abs оператор.

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

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

Нека стартираме $abs оператор срещу този документ:

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

Резултат:

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

Можем да видим, че b разрешен до null .

Можем също да видим, че 0 разрешава до 0 .

NaN стойности

Ако аргументът се разреши до NaN , $abs връща NaN .

Пример:

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

Резултат:

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

В този случай се опитах да умножа число по низ, което доведе до NaN се връща.

Несъществуващи полета

Ако $abs операторът се прилага срещу поле, което не съществува, null се връща.

Пример:

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

Резултат:

{ "c" : null }

Комбинирано с други оператори

В този пример комбинирам $abs с $subtract за да се изчисли големината на разликата между полетата a и b :

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

Резултат:

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


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Дизайн на схема на MongoDB:Винаги има схема

  2. Разлика между базирани на документи и базирани на ключ/стойност бази данни?

  3. Зареждането на частични части е неуспешно на сървъра JS

  4. Как да изброя всички бази данни MongoDB в Node.js?

  5. Архивиране и възстановяване на MongoDB