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 độ.