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

MongoDB $ độToRadians

Trong MongoDB, $degreesToRadians nhà điều hành đường ống tổng hợp chuyển đổi giá trị đầu vào được đo bằng độ sang radian.

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

$degreesToRadians 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" : 180 }

Và giả sử rằng giá trị của data trường tính bằng độ (do đó, trong trường hợp này là 180 độ).

Chúng ta có thể sử dụng $degreesToRadians toán tử để chuyển đổi data trường sang radian:

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

Kết quả:

{ "degrees" : 180, "radians" : 3.141592653589793 }

Theo mặc định, $degreesToRadians 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 $degreesToRadians 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 $degreesToRadians toán tử đối với tài liệu đó:

db.test.aggregate(
  [
    { $match: { _id: 2 } },
    { $project: { 
        _id: 0,
        degrees: "$data",
        radians: { $degreesToRadians: "$data" }
      }
    }
  ]
).pretty()

Kết quả:

{
	"degrees" : NumberDecimal("90.1301023541559787031443874490659"),
	"radians" : NumberDecimal("1.573067041239514175890278047405623")
}

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

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

Kết quả:

{ "radians" : 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 , $degreesToRadians trả về NaN .

Ví dụ:

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

Kết quả:

{ "radians" : NaN }

Vô cực

Nếu đối số phân giải thành Infinity hoặc -Infinity , $degreesToRadians 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 $degreesToRadians so với trường dữ liệu:

db.test.aggregate(
  [
    { $match: { _id: 4 } },
    { $project: { 
        _id: 0,
        radians: { $degreesToRadians: "$data" }
      }
    }
  ]
)

Kết quả:

{ "radians" : Infinity }

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

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

Kết quả:

{ "radians" : 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 chấp nhận các biểu thức của họ bằng radian. Nếu một trường có giá trị tính bằng độ, bạn có thể kết hợp $degreesToRadians để chuyển đổi biểu thức sang radian.

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 }

Và trong trường hợp này, giá trị của trường dữ liệu tính bằng độ.

Bây giờ, giả sử chúng ta muốn sử dụng $cosh toán tử để trả về cosin hyperbol của dữ liệu data đồng ruộng. Vấn đề duy nhất là $cosh toán tử chấp nhận các biểu thức tính bằng radian.

Không vấn đề gì! Chúng tôi có thể sử dụng $degreesToRadians để chuyển đổi biểu thức đầu vào thành radian.

Ví dụ:

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

Kết quả:

{ "hyperbolicCosine" : 0.17571384980422547 }

  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Khái niệm cơ bản về tự động hóa cơ sở dữ liệu MongoDB bằng Chef

  2. Các bước kết nối MongoDB và Solr bằng DataImportHandler

  3. Triển khai MongoDB bằng Docker

  4. Làm thế nào để thực hiện cập nhật hàng loạt tài liệu trong MongoDB với Java?

  5. sắp xếp tổng hợp mongodb