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

MongoDB $ radiansToDegrees

Trong MongoDB, $radiansToDegrees nhà điều hành đường ống tổng hợp chuyển đổi một giá trị đầu vào được đo bằng radian sang độ.

$radiansToDegrees chấp nhận bất kỳ biểu thức hợp lệ nào phân giải thành một số.

$radiansToDegrees toán tử đã được giới thiệu trong MongoDB 4.2.

Ví dụ

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

{ "_id" : 1, "data" : 0.5 }

Và giả sử rằng giá trị của data trường tính bằng radian (tức là 0.5 rađian).

Chúng ta có thể sử dụng $radiansToDegrees toán tử để chuyển đổi data trường sang độ:

db.test.aggregate(
  [
    { $match: { _id: 1 } },
    { $project: { 
        _id: 0,
        radians: "$data",
        degrees: { $radiansToDegrees: "$data" }
      }
    }
  ]
)

Kết quả:

{ "radians" : 0.5, "degrees" : 28.64788975654116 }

Theo mặc định, $radiansToDegrees toán tử trả về các giá trị dưới dạng double , nhưng nó cũng có thể trả về giá trị dưới dạng số thập phân 128 bit miễn là biểu thức phân giải thành giá trị thập phân 128 bit.

Giá trị thập phân 128 bit

Nếu biểu thức được cung cấp cho $radiansToDegrees là số thập phân 128 bit, sau đó kết quả được trả về ở số thập phân 128 bit.

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, "data" : NumberDecimal("0.1301023541559787031443874490659") }

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

db.test.aggregate(
  [
    { $match: { _id: 2 } },
    { $project: { 
        _id: 0,
        radians: "$data",
        degrees: { $radiansToDegrees: "$data" }
      }
    }
  ]
).pretty()

Kết quả:

{
	"radians" : NumberDecimal("0.1301023541559787031443874490659"),
	"degrees" : NumberDecimal("7.454315797853905125952127312900524")
}

Đầu ra là số thập phân 128 bit.

Giá trị rỗng

Giá trị rỗng trả về null khi sử dụng $radiansToDegrees 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" : 3, "data" : null }

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

db.test.aggregate(
  [
    { $match: { _id: 3 } },
    { $project: { 
        _id: 0,
        degrees: { $radiansToDegrees: "$data" }
      }
    }
  ]
)

Kết quả:

{ "degrees" : null }

Chúng ta có thể thấy rằng kết quả là null .

Giá trị NaN

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

Ví dụ:

db.test.aggregate(
  [
    { $match: { _id: 3 } },
    { $project: { 
        _id: 0,
        degrees: { $radiansToDegrees: 0 * "$data" }
      }
    }
  ]
)

Kết quả:

{ "degrees" : NaN }

Vô cực

Nếu đối số phân giải thành Infinity hoặc -Infinity , $radiansToDegrees toán tử trả về Infinity .

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

{ "_id" : 4, "data" : Infinity }

Hãy chạy $radiansToDegrees so với trường dữ liệu:

db.test.aggregate(
  [
    { $match: { _id: 4 } },
    { $project: { 
        _id: 0,
        degrees: { $radiansToDegrees: "$data" }
      }
    }
  ]
)

Kết quả:

{ "degrees" : Infinity }

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

Nếu $radiansToDegrees 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.test.aggregate(
  [
    { $match: { _id: 4 } },
    { $project: { 
        _id: 0,
        degrees: { $radiansToDegrees: "$name" }
      }
    }
  ]
)

Kết quả:

{ "degrees" : null }

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

Một số toán tử đường ống tổng hợp trả về kết quả của họ bằng radian. Bạn có thể kết hợp $radiansToDegrees với các toán tử như vậy để trả về kết quả theo độ.

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

{ "_id" : 1, "data" : 0.5 }

Và giả sử chúng ta muốn sử dụng $asin toán tử để trả về arcsine của data đồng ruộng. $asin toán tử trả về kết quả của nó bằng radian, nhưng giả sử chúng ta muốn kết quả bằng độ thay thế.

Trong trường hợp này, chúng ta có thể làm như sau:

db.test.aggregate(
  [
    { $match: { _id: 1 } },
    { $project: { 
        _id: 0,
        radians: { $asin: "$data" },
        degrees: { $radiansToDegrees: { $asin: "$data" } }
      }
    }
  ]
)

Kết quả:

{ "radians" : 0.5235987755982988, "degrees" : 29.999999999999996 }

Trong ví dụ này, trường đầu tiên trình bày kết quả bằng radian và trường thứ hai trình bày kết quả bằng độ.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB Multikey Indexes &Index Intersection Bounds

  2. Sọc:Phải cung cấp nguồn hoặc khách hàng

  3. Cập nhật bộ sưu tập MongoDB bằng $ toLower

  4. MongoDB $ stdDevPop

  5. MongoDB findOneAndReplace ()