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

MongoDB $ atanh

Trong MongoDB, $atanh toán tử đường ống tổng hợp trả về arctang hyperbol (tiếp tuyến ngược hyperbol) của một giá trị.

Giá trị trả về tính bằng radian.

$atanh 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ố giữa -11 .

$atanh 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 }

Chúng ta có thể sử dụng $atanh toán tử để trả về arctang hyperbolic của data lĩnh vực:

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

Kết quả:

{ "hyperbolicArctangent" : 0.5493061443340549 }

Chuyển đổi sang độ

Như đã đề cập, $atanh trả về kết quả của nó theo đơn vị radian. Bạn có thể sử dụng $radiansToDegrees nếu bạn muốn kết quả bằng độ.

Ví dụ:

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

Kết quả:

{ "radians" : 0.5493061443340549, "degrees" : 31.472923730945382 }

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

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

Theo mặc định, $atanh 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("0.1301023541559787031443874490659") }

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

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

Kết quả:

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

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

Giá trị ngoài phạm vi

$atanh toán tử 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ố trong khoảng từ -11 . Các giá trị nằm ngoài phạm vi đó sẽ gây ra lỗi.

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" : 2 }

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

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

Kết quả:

uncaught exception: Error: command failed: {
	"ok" : 0,
	"errmsg" : "cannot apply $atanh to 2, value must in [-1,1]",
	"code" : 50989,
	"codeName" : "Location50989"
} : aggregate failed :
[email protected]/mongo/shell/utils.js:25:13
[email protected]/mongo/shell/assert.js:18:14
[email protected]/mongo/shell/assert.js:618:17
[email protected]/mongo/shell/assert.js:708:16
[email protected]/mongo/shell/db.js:266:5
[email protected]/mongo/shell/collection.js:1046:12
@(shell):1:1

Giá trị rỗng

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

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

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

Ví dụ:

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

Kết quả:

{ "result" : NaN }

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

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

Kết quả:

{ "result" : null }

Vô cực

Cung cấp Infinity hoặc -Infinity sẽ trả về lỗi nằm ngoài phạm vi (như chúng ta đã thấy trước đó).

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

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

Hãy chạy $atanh một lần nữa:

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

Kết quả:

uncaught exception: Error: command failed: {
	"ok" : 0,
	"errmsg" : "cannot apply $atanh to inf, value must in [-1,1]",
	"code" : 50989,
	"codeName" : "Location50989"
} : aggregate failed :
[email protected]/mongo/shell/utils.js:25:13
[email protected]/mongo/shell/assert.js:18:14
[email protected]/mongo/shell/assert.js:618:17
[email protected]/mongo/shell/assert.js:708:16
[email protected]/mongo/shell/db.js:266:5
[email protected]/mongo/shell/collection.js:1046:12
@(shell):1:1

  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. 3 cách tạo chỉ mục trong MongoDB

  2. Khởi động PHP Không thể tải thư viện động php_mongo.dll

  3. Spring Data Mongo - áp dụng các trường kết hợp duy nhất trong tài liệu nhúng

  4. Tôi cố gắng chạy máy chủ mongod trên ubuntu:ngoại lệ trong initAndListen:29 Không tìm thấy thư mục dữ liệu / data / db., Terminating

  5. Lập kế hoạch &Quản lý các lược đồ trong MongoDB (Ngay cả khi Nó không có Schemaless)