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

MongoDB $ toDouble

Từ MongoDB 4.0, bạn có thể sử dụng $toDouble toán tử đường ống tổng hợp để chuyển đổi một giá trị thành giá trị kép.

Hầu hết các loại đều có thể được chuyển đổi thành double, nhưng ObjectId thì không.

Khi bạn chuyển đổi giá trị Ngày thành giá trị kép, $toDouble trả về số mili giây kể từ kỷ nguyên tương ứng với giá trị ngày.

Khi bạn chuyển đổi boolean thành double, nếu boolean là true , thì dấu kép là 1 . Nếu boolean là false , thì dấu kép là 0 .

Ví dụ

Giả sử chúng ta có một tập hợp được gọi là types và nó chứa các tài liệu sau:

{
	"_id" : ObjectId("601340eac8eb4369cf6ad9db"),
	"double" : 123.75,
	"string" : "123",
	"boolean" : true,
	"date" : ISODate("2020-12-31T23:30:15.123Z"),
	"integer" : 123,
	"long" : NumberLong(123),
	"decimal" : NumberDecimal("123.75")
}

Chúng ta có thể sử dụng $toDouble toán tử để chuyển đổi các kiểu đó (ngoại trừ ObjectId) thành một kép. Nếu đầu vào đã là giá trị kép, thì nó chỉ cần trả về giá trị kép.

db.types.aggregate(
  [
    {
      $project:
        { 
          _id: 0,
          double: { $toDouble: "$double" },
          string: { $toDouble: "$string" },
          boolean: { $toDouble: "$boolean" },
          date: { $toDouble: "$date" },
          integer: { $toDouble: "$integer" },
          long: { $toDouble: "$long" },
          decimal: { $toDouble: "$decimal" }
        }
    }
  ]
).pretty()

Kết quả:

{
	"double" : 123.75,
	"string" : 123,
	"boolean" : 1,
	"date" : 1609457415123,
	"integer" : 123,
	"long" : 123,
	"decimal" : 123.75
}

Lỗi

Nếu bạn gặp lỗi, hãy thử sử dụng $convert toán tử thay vì $toDouble . $convert cho phép bạn xử lý lỗi mà không ảnh hưởng đến toàn bộ hoạt động tổng hợp.

$toDouble toán tử tương đương với việc sử dụng $convert toán tử để chuyển đổi một giá trị thành một giá trị kép.

Dưới đây là một ví dụ về việc sử dụng $convert để cố gắng chuyển đổi một ObjectId thành double (dẫn đến lỗi):

db.types.aggregate(
  [
    {
      $project:
        { 
          _id: 0,
          result: 
          {
            $convert: { 
              input: "$_id", 
              to: "double",
              onError: "An error occurred",
              onNull: "Input was null or empty" 
            }
          }
        }
    }
  ]
)

Kết quả:

{ "result" : "An error occurred" } 

Sử dụng $convert cho phép chúng tôi chỉ định thông báo lỗi để sử dụng khi lỗi xảy ra và nó không làm tạm dừng toàn bộ hoạt động tổng hợp.

Xem MongoDB $convert để biết thêm ví dụ.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Làm thế nào để chuyển đổi từ kiểu dữ liệu chuỗi sang ngày tháng?

  2. Từ chối lời hứa chưa được xử lý:Lỗi:URL không đúng định dạng, không thể phân tích cú pháp

  3. Trả về kết quả mongoose trong truy vấn tìm đến một biến

  4. Xóa phần tử khỏi mongodb mảng lồng nhau

  5. Cập nhật bộ sưu tập MongoDB bằng $ toLower