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

Nhà điều hành đường ống tổng hợp MongoDB $ type

Trong MongoDB, $type toán tử đường ống tổng hợp trả về kiểu BSON của đối số của nó.

Bạn có thể sử dụng nó để tìm ra loại trường nhất định.

Ví dụ

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

{
	"_id" : ObjectId("60173c09c8eb4369cf6ad9e0"),
	"name" : "Scratch",
	"born" : ISODate("2021-01-03T23:30:15.123Z"),
	"weight" : 30
}

Chúng tôi có thể sử dụng mã sau để trả về các loại trường đó:

db.cats.aggregate(
  [
    {
      $project:
        { 
          _id: { $type: "$_id" },
          name: { $type: "$name" },
          born: { $type: "$born" },
          weight: { $type: "$weight" }
        }
    }
  ]
).pretty()

Kết quả:

{
	"_id" : "objectId",
	"name" : "string",
	"born" : "date",
	"weight" : "double"
}

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.

Chúng tôi có một bộ sưu tậ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 ta có thể sử dụng mã sau để trả về các loại trường đó:

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

Kết quả:

{
	"_id" : "objectId",
	"double" : "double",
	"string" : "string",
	"boolean" : "bool",
	"date" : "date",
	"integer" : "int",
	"long" : "long",
	"decimal" : "decimal",
	"object" : "object",
	"array" : "array"
}

Lọc theo loại

Ngoài ra còn có một $type toán tử truy vấn phần tử cho phép bạn lọc một bộ sưu tập tài liệu dựa trên loại BSON.

Kiểm tra số

Nếu bạn chỉ muốn kiểm tra xem giá trị có phải là số hay không, hãy xem MongoDB $isNumber .


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Xóa tài liệu nhúng trong một mảng tài liệu lồng nhau

  2. Trình điều khiển Promise và nodejs MongoDB

  3. Cách chuyển ObjectId từ MongoDB trong MVC.net

  4. Làm cách nào để trả về kết quả Mongoose từ phương thức find?

  5. Không thể đọc DBname.system.indexes trên cụm Atlas bằng mongobee sau khi được kết nối