Trong MongoDB, $sinh
toán tử đường ống tổng hợp trả về sin hyperbol của một giá trị được đo bằng radian.
$sinh
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ố.
$sinh
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" : 2 }
Chúng ta có thể sử dụng $sinh
toán tử để trả về sin hyperbol của data
lĩnh vực:
db.test.aggregate(
[
{ $match: { _id: 1 } },
{ $project: {
_id: 0,
hyperbolicSine: { $sinh: "$data" }
}
}
]
)
Kết quả:
{ "hyperbolicSine" : 3.6268604078470186 }
Chuyển đổi sang Radian
Như đã đề cập, $sinh
trả về sin của một giá trị được đo bằng radian. Nếu giá trị tính bằng độ, bạn có thể sử dụng $degreesToRadians
để chuyển đổi nó thành radian.
Ví dụ:
db.test.aggregate(
[
{ $match: { _id: 1 } },
{ $project: {
_id: 0,
hyperbolicSine: { $degreesToRadians: { $sinh: "$data" } }
}
}
]
)
Kết quả:
{ "hyperbolicSine" : 0.06330065562715485 }
Giá trị thập phân 128 bit
Theo mặc định, $sinh
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ả 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("2.1301023541559787031443874490659") }
Hãy chạy $sinh
toán tử đối với tài liệu đó:
db.test.aggregate(
[
{ $match: { _id: 2 } },
{ $project: {
_id: 0,
result: { $sinh: "$data" }
}
}
]
)
Kết quả:
{ "result" : NumberDecimal("4.148451510563232456419254731162938") }
Đầ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 $sinh
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 $sinh
toán tử đối với tài liệu đó:
db.test.aggregate(
[
{ $match: { _id: 3 } },
{ $project: {
_id: 0,
result: { $sinh: "$data" }
}
}
]
)
Kết quả:
{ "result" : 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
, $sinh
trả về NaN
.
Ví dụ:
db.test.aggregate(
[
{ $match: { _id: 1 } },
{ $project: {
_id: 0,
result: { $sinh: 1 * "$data" }
}
}
]
)
Kết quả:
{ "result" : NaN }
Các trường không tồn tại
Nếu $sinh
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: 1 } },
{ $project: {
_id: 0,
result: { $sinh: "$name" }
}
}
]
)
Kết quả:
{ "result" : null }
Vô cực
Cung cấp Infinity
trả về Infinity
và cung cấp -Infinity
trả về -Infinity
.
Giả sử chúng ta thêm các tài liệu sau vào bộ sưu tập:
{ "_id" : 4, "data" : Infinity } { "_id" : 5, "data" : -Infinity }
Hãy áp dụng $sinh
đối với các tài liệu này:
db.test.aggregate(
[
{ $match: { _id: { $in: [ 4, 5 ] } } },
{ $project: {
hyperbolicSine: { $sinh: "$data" }
}
}
]
)
Kết quả:
{ "_id" : 4, "hyperbolicSine" : Infinity } { "_id" : 5, "hyperbolicSine" : -Infinity }