Bagikan melalui


$type (kueri elemen)

BERLAKU UNTUK: MongoDB vCore

Operator $type memilih dokumen jika bidang berjenis yang ditentukan. Ini berguna untuk validasi data dan memastikan konsistensi di seluruh dokumen dalam koleksi. Operator $type menerima nomor jenis BSON dan alias string.

Sintaksis

Sintaks untuk $objectToArray operator adalah sebagai berikut:

{
  <field>: { $type: <BSON type number> | <string alias> }
}

Parameter-parameternya

Deskripsi
field Bidang untuk memeriksa jenis.
BSON type number Angka yang sesuai dengan jenis BSON (misalnya, 1 untuk ganda, 2 untuk string).
string alias Alias string untuk jenis BSON (misalnya, "double", "string", "object", "array").

Jenis BSON Umum

Tipe Angka Nama lain Deskripsi
Dobel 1 "ganda" Titik mengambang 64-bit
string 2 "string" String UTF-8
Objek 3 "objek" Dokumen yang disematkan
Array 4 "array" Array
IDObjek 7 objectId IDObjek
Boolean (tipe data yang hanya memiliki dua nilai: true atau false) 8 "bool" Boolean (tipe data yang hanya memiliki dua nilai: true atau false)
Tanggal 9 "tanggal" Tanggal
Nol 10 "null" Nilai null
bilangan bulat 32-bit 16 "int" bilangan bulat 32-bit
Penanda Waktu 17 "tanda waktu" Penanda Waktu
bilangan bulat 64-bit 18 "panjang" bilangan bulat 64-bit

Contoh

Mari kita pahami penggunaan dengan sampel JSON dari himpunan stores data.

{
  "_id": "905d1939-e03a-413e-a9c4-221f74055aac",
  "name": "Trey Research | Home Office Depot - Lake Freeda",
  "location": { "lat": -48.9752, "lon": -141.6816 },
  "staff": { "employeeCount": { "fullTime": 12, "partTime": 19 } },
  "sales": {
    "salesByCategory": [ { "categoryName": "Desk Lamps", "totalSales": 37978 } ],
    "revenue": 37978
  },
  "promotionEvents": [
    {
      "eventName": "Crazy Deal Days",
      "promotionalDates": {
        "startDate": { "Year": 2023, "Month": 9, "Day": 27 },
        "endDate": { "Year": 2023, "Month": 10, "Day": 4 }
      },
      "discounts": [
        { "categoryName": "Desks", "discountPercentage": 22 },
        { "categoryName": "Filing Cabinets", "discountPercentage": 23 }
      ]
    }
  ],
  "company": "Trey Research",
  "city": "Lake Freeda",
  "storeOpeningDate": "2024-09-26T22:55:25.779Z",
  "lastUpdated": "Timestamp({ t: 1729983325, i: 1 })"
}

Contoh 1: Temukan penyimpanan dengan nama jenis string

Contoh menemukan semua penyimpanan di mana name bidang berjenis string.

db.stores.find(
 { "name": { $type: "string" }},
 { "_id": 1, "name": 1 }).limit(1)

Kueri mengembalikan semua dokumen di name mana bidang berisi nilai string.

{
  "_id": "a715ab0f-4c6e-4e9d-a812-f2fab11ce0b6",
  "name": "Lakeshore Retail | Holiday Supply Hub - Marvinfort"
}

Contoh 2: Validasi data menggunakan pemeriksaan beberapa jenis

Contoh ini menunjukkan bahwa memvalidasi bahwa bidang penting memiliki jenis data yang benar.

db.stores.find({
  "_id": "905d1939-e03a-413e-a9c4-221f74055aac",
  "name": { $type: "string" },
  "location": { $type: "object" },
  "staff.employeeCount.fullTime": { $type: ["int", "long"] },
  "promotionEvents": { $type: "array" }},
  { "_id": 1, "name": 1,"location":1, "staff": 1 }
)

Kueri mengembalikan penyimpanan di mana semua bidang tertentu memiliki tipe data yang diharapkan, membantu memastikan konsistensi data.

{
  "_id": "905d1939-e03a-413e-a9c4-221f74055aac",
  "name": "Trey Research | Home Office Depot - Lake Freeda",
  "location": { "lat": -48.9752, "lon": -141.6816 },
  "staff": { "employeeCount": { "fullTime": 12 } }
}