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

MongoDB $ toLong

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

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

Khi bạn chuyển đổi giá trị Ngày thành dài, $toLong 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 long, nếu boolean là true , thì độ dài là 1 . Nếu boolean là false , thì độ dài 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 $toLong toán tử để chuyển đổi các trường đó (ngoại trừ _id trường) dài. Nếu đầu vào đã là dài, thì nó chỉ trả về giá trị dài.

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

Kết quả:

{
	"double" : NumberLong(123),
	"string" : NumberLong(123),
	"boolean" : NumberLong(1),
	"date" : NumberLong("1609457415123"),
	"integer" : NumberLong(123),
	"long" : NumberLong(123),
	"decimal" : NumberLong(123)
}

Lỗi

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

$toLong 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ị dài.

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 dài (dẫn đến lỗi):

db.types.aggregate(
  [
    {
      $project:
        { 
          _id: 0,
          result: 
          {
            $convert: { 
              input: "$_id", 
              to: "long",
              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 kết nối mongodb từ xa với pymongo

  2. không thành công với lỗi 10068:toán tử không hợp lệ:$ oid

  3. Sử dụng S3 làm cơ sở dữ liệu so với cơ sở dữ liệu (ví dụ:MongoDB)

  4. Xử lý các thay đổi giản đồ trong Mongoose

  5. rmongodb:sử dụng $ hoặc trong truy vấn