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

MongoDB $ toInt

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

Hầu hết các loại đều có thể được chuyển đổi thành số nguyên, nhưng giá trị ObjectId và Date thì không.

Khi bạn chuyển đổi boolean thành một số nguyên, nếu boolean là true , thì số nguyên là 1 . Nếu boolean là false , thì số nguyên là 0 .

Các giá trị số như kép và thập phân được cắt bớt theo yêu cầu.

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 $toInt toán tử để chuyển đổi các trường đó (ngoại trừ _iddate trường) thành một số nguyên. Nếu đầu vào đã là một số nguyên, thì nó chỉ cần trả về số nguyên.

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

Kết quả:

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

Lưu ý rằng tôi đã loại trừ date_id các trường từ hoạt động, bởi vì các loại này không thể được chuyển đổi thành một số nguyên.

Lỗi

Nếu bạn gặp lỗi, hãy thử sử dụng $convert toán tử thay vì $toInt . $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.

$toInt 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 số nguyên.

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

db.types.aggregate(
  [
    {
      $project:
        { 
          _id: 0,
          result: 
          {
            $convert: { 
              input: "$date", 
              to: "int",
              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. Cách xóa N số tài liệu trong mongodb

  2. Cách VÀ và KHÔNG trong tìm kiếm văn bản MongoDB $

  3. Tại sao MongoDB lại nhanh như vậy

  4. MongoDB - Truy vấn chiếu

  5. Làm cách nào để xóa các mục trùng lặp khỏi một mảng?