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

MongoDB $ isNumber

Từ MongoDB 4.4, bạn có thể sử dụng $isNumber toán tử đường ống tổng hợp để kiểm tra xem một giá trị có phải là một số hay không.

Nó chấp nhận bất kỳ biểu thức hợp lệ nào và trả về true nếu biểu thức là một số, false nếu không.

Cụ thể, $isNumber kiểm tra xem biểu thức có phân giải thành một trong các loại BSON sau đây không:

  • Integer
  • Decimal
  • Double
  • Long

Nó trả về true nếu nó không.

Nó trả về false nếu biểu thức phân giải thành bất kỳ loại BSON nào khác, null hoặc một trường bị thiếu.

Ví dụ

Giả sử chúng ta có một bộ sưu tập có tên là dogs với tài liệu sau:

{ "_id" : 1, "name" : "Fetch", "weight" : 30 } 

Chúng ta có thể sử dụng đoạn mã sau để xem trường nào là số:

db.dogs.aggregate(
  [
    {
      $project:
        { 
          _id: { $isNumber: "$_id" },
          name: { $isNumber: "$name" },
          weight: { $isNumber: "$weight" }
        }
    }
  ]
)

Kết quả:

{ "_id" : true, "name" : false, "weight" : true }

Chúng ta có thể thấy rằng _idweight các trường là số, nhưng name không phải là trường (nó là một chuỗi).

Ví dụ 2

Dưới đây là một ví dụ khác chứa nhiều trường thuộc các loại BSON khác nhau.

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

{
	"_id" : ObjectId("601738d7c8eb4369cf6ad9de"),
	"double" : 123.75,
	"string" : "123",
	"boolean" : true,
	"date" : ISODate("2020-12-31T23:30:15.123Z"),
	"integer" : 123,
	"long" : NumberLong(123),
	"decimal" : NumberDecimal("123.75"),
	"object" : {
		"a" : 1
	},
	"array" : [
		1,
		2,
		3
	]
}

Với mục đích của bài viết này, tôi đã đặt tên cho mỗi trường để phản ánh loại BSON của nó.

Bây giờ chúng tôi có thể sử dụng mã sau để trả về true hoặc false cho mỗi trường, tùy thuộc vào trường có phải là một số hay không:

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

Kết quả:

{
	"_id" : false,
	"double" : true,
	"string" : false,
	"boolean" : false,
	"date" : false,
	"integer" : true,
	"long" : true,
	"decimal" : true,
	"object" : false,
	"array" : false
}

  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB / NoSQL:Giữ lịch sử thay đổi tài liệu

  2. Chọn Max () với nhóm theo mongodb

  3. JSON tuần tự hóa Mongodb

  4. Hiểu và quản lý dung lượng đĩa trên máy chủ MongoDB của bạn

  5. Làm thế nào để chuyển đổi một pymongo.cursor.Cursor thành một dict?