Trong MongoDB, $cosh
toán tử đường ống tổng hợp trả về cosin hyperbol của một giá trị được đo bằng radian.
$cosh
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ố.
$cosh
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" : 3 }
Chúng ta có thể sử dụng $cosh
toán tử để trả về cosine của data
lĩnh vực:
db.test.aggregate(
[
{ $match: { _id: 1 } },
{ $project: {
_id: 0,
hyperbolicCosine: { $cosh: "$data" }
}
}
]
)
Kết quả:
{ "hyperbolicCosine" : 10.067661995777765 }
Theo mặc định, $cosh
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.
Khi Biểu thức ở Độ
Như đã đề cập, $cosh
chấp nhận biểu thức của nó bằng radian. Bạn có thể sử dụng $degreesToRadians
toán tử để chuyển đổi bất kỳ giá trị nào từ độ sang radian.
Ví dụ:
db.test.aggregate(
[
{ $match: { _id: 1 } },
{ $project: {
_id: 0,
hyperbolicCosine: { $degreesToRadians: { $cosh: "$data" } }
}
}
]
)
Kết quả:
{ "hyperbolicCosine" : 0.17571384980422547 }
Giá trị rỗng
Giá trị rỗng trả về null
khi sử dụng $cosh
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 $cosh
toán tử đối với tài liệu đó:
db.test.aggregate(
[
{ $match: { _id: 3 } },
{ $project: {
_id: 0,
hyperbolicCosine: { $cosh: "$data" }
}
}
]
)
Kết quả:
{ "hyperbolicCosine" : 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
, $cosh
trả về NaN
.
Ví dụ:
db.test.aggregate(
[
{ $match: { _id: 3 } },
{ $project: {
_id: 0,
hyperbolicCosine: { $cosh: 1 * "string" }
}
}
]
)
Kết quả:
{ "hyperbolicCosine" : 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.
Vô cực
Nếu đối số phân giải thành Infinity
hoặc -Infinity
, $cosh
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 $cosh
so với trường dữ liệu:
db.test.aggregate(
[
{ $match: { _id: 4 } },
{ $project: {
_id: 0,
hyperbolicCosine: { $cosh: "$data" }
}
}
]
)
Kết quả:
{ "hyperbolicCosine" : Infinity }
Các trường không tồn tại
Nếu $cosh
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,
hyperbolicCosine: { $cosh: "$name" }
}
}
]
)
Kết quả:
{ "hyperbolicCosine" : null }
128-bit Decimal
Như đã đề cập, nếu biểu thức được cung cấp cho $cosh
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:
{ "_id" : 5, "data" : NumberDecimal("1.1301023541559787031443874490659") }
Đây là những gì sẽ xảy ra khi chúng tôi chạy điều đó thông qua $cosh
nhà điều hành:
db.test.aggregate(
[
{ $match: { _id: 5 } },
{ $project: {
_id: 0,
hyperbolicCosine: { $cosh: "$data" }
}
}
]
)
Kết quả:
{ "hyperbolicCosine" : NumberDecimal("1.709486781983575502518713909095045") }
Đầu ra là số thập phân 128 bit.