MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

MongoDB $ abs

Trong MongoDB, $abs toán tử đường ống tổng hợp trả về giá trị tuyệt đối của một số.

Ví dụ

Giả sử chúng ta có một tập hợp được gọi là data với tài liệu sau:

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

Chúng ta có thể sử dụng $abs toán tử để trả về các giá trị tuyệt đối của ab các lĩnh vực.

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

Kết quả:

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

Giá trị tuyệt đối không bao gồm bất kỳ dấu hiệu nào và vì vậy chúng ta có thể thấy dấu âm đã bị xóa khỏi b giá trị.

Bạn có thể coi giá trị tuyệt đối của một số là khoảng cách, trên trục số, của số đó từ 0.

Giá trị rỗng

Giá trị rỗng trả về null khi sử dụng $abs nhà điều hành.

Giả sử chúng ta thêm tài liệu sau vào bộ sưu tập của mình:

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

Hãy chạy $abs toán tử đối với tài liệu đó:

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

Kết quả:

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

Chúng ta có thể thấy rằng b được giải quyết thành null .

Chúng ta cũng có thể thấy rằng 0 giải quyết thành 0 .

Giá trị NaN

Nếu đối số phân giải thành NaN , $abs trả về NaN .

Ví dụ:

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

Kết quả:

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

Trong trường hợp này, tôi đã cố gắng nhiều một số với một chuỗi, dẫn đến NaN được trả lại.

Các trường không tồn tại

Nếu $abs toán tử được áp dụng cho một trường không tồn tại, null được trả lại.

Ví dụ:

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

Kết quả:

{ "c" : null }

Kết hợp với các nhà khai thác khác

Trong ví dụ này, tôi kết hợp $abs với $subtract để tính toán mức độ chênh lệch giữa các trường ab :

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

Kết quả:

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


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Cách nhanh nhất để sao chép một bộ sưu tập trong cùng một cơ sở dữ liệu là gì?

  2. Nhiều hoạt động nhóm bằng cách sử dụng khung tổng hợp Mongo

  3. Nhóm có điều kiện với $ tồn tại bên trong $ cond

  4. WiredTiger và cập nhật tại chỗ

  5. 3 cách để trả lại giá trị khác biệt trong MongoDB