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

MongoDB $ tanh

Trong MongoDB, $tanh toán tử đường ống tổng hợp trả về tiếp tuyến hyperbol của một giá trị được đo bằng radian.

$tanh 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ố.

$tanh 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 $tanh toán tử để trả về tiếp tuyến hyperbol của data lĩnh vực:

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

Kết quả:

{ "hyperbolicTangent" : 0.9640275800758169 }

Chuyển đổi sang Radian

Như đã đề cập, $tanh trả về tiếp tuyến hyperbol 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,
        hyperbolicTangent: { $degreesToRadians: { $tanh: "$data" } }
      }
    }
  ]
)

Kết quả:

{ "hyperbolicTangent" : 0.016825455352356293 }

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

Theo mặc định, $tanh 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 áp dụng $tanh toán tử so với data trường trong tài liệu đó:

db.test.aggregate(
  [
    { $match: { _id: 2 } },
    { $project: { 
        _id: 0,
        result: { $tanh: "$data" }
      }
    }
  ]
)

Kết quả:

{ "result" : NumberDecimal("0.9721543408207801550541565157881927") }

Đầ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 $tanh 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 áp dụng $tanh toán tử đối với tài liệu đó:

db.test.aggregate(
  [
    { $match: { _id: 3 } },
    { $project: { 
        _id: 0,
        result: { $tanh: "$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 , $tanh trả về NaN .

Ví dụ:

db.test.aggregate(
  [
    { $match: { _id: 1 } },
    { $project: { 
        _id: 0,
        result: { $tanh: 1 * "$data" }
      }
    }
  ]
)

Kết quả:

{ "result" : NaN }

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

Nếu $tanh 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: { $tanh: "$name" }
      }
    }
  ]
)

Kết quả:

{ "result" : null }

Vô cực

Cung cấp Infinity trả về 1 và cung cấp -Infinity trả về -1 .

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 $tanh đối với các tài liệu này:

db.test.aggregate(
  [
    { $match: { _id: { $in: [ 4, 5 ] } } },
    { $project: { 
        hyperbolicTangent: { $tanh: "$data" }
      }
    }
  ]
)

Kết quả:

{ "_id" : 4, "hyperbolicTangent" : 1 }
{ "_id" : 5, "hyperbolicTangent" : -1 }

  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. 3 cách để giảm chỉ mục trong MongoDB

  2. MongoDB:Làm thế nào để xác định một lược đồ?

  3. Chuyển đổi dự phòng cho MySQL Replication (và những thứ khác) - Nó có nên được Tự động hóa không?

  4. Mongoose - sử dụng Populate trên một mảng ObjectId

  5. MongoDB - sao chép bộ sưu tập trong java mà không cần lặp lại tất cả các mục