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

MongoDB $ sin

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

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

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

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

Kết quả:

{ "sine" : 0.9092974268256817 }

Chuyển đổi sang Radian

Như đã đề cập, $sin 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,
        sine: { $degreesToRadians: { $sin: "$data" } }
      }
    }
  ]
)

Kết quả:

{ "sine" : 0.015870233978020357 }

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

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

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

Kết quả:

{ "sine" : NumberDecimal("0.8476235356531703096519423201190329") }

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

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

Kết quả:

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

Ví dụ:

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

Kết quả:

{ "sine" : NaN }

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

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

Kết quả:

{ "sine" : null }

Vô cực

Cung cấp Infinity hoặc -Infinity sẽ trả về lỗi nằm ngoài phạm vi.

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

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

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

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

Kết quả:

uncaught exception: Error: command failed: {
	"ok" : 0,
	"errmsg" : "cannot apply $sin to inf, value must in (-inf,inf)",
	"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. Mẹo để chạy MongoDB trong sản xuất bằng cách sử dụng các luồng thay đổi

  2. Suy nghĩ của MongoDB và PostgreSQL

  3. Hướng dẫn PyMongo:Kiểm tra chuyển đổi dự phòng MongoDB trong ứng dụng Python của bạn

  4. MongoNetworkError:không kết nối được với máy chủ [localhost:27017] trong lần kết nối đầu tiên [MongoNetworkError:connect ECONNREFUSED 127.0.0.1:27017]

  5. node.js không thể tìm thấy mô-đun 'mongodb'