iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 15
0
Modern Web

我或許沒那麼懂 Web系列 第 15

Cloud Firestore β (7): 欄位

今天來講講文件裡的欄位是支援哪些資料型別以及其使用細節吧!

總共支援的資料型別有:

  • Array
  • Boolean
  • Bytes
  • Date and time
  • Floating-point number
  • Geographical point
  • Integer
  • Map
  • Null
  • Reference
  • Text string

Array 裡面可以儲存除了 Array 以外其他型別的任何值,Array 之間的排序是比較其中的元素,若是比較的元素都相同,則會比較長度,比較短的會被視為比較小。例如:[1, 2, 3] < [1, 2, 3, 1] < [2]

Boolean,單純的布林值,排序上 false < true

Bytes 可以用來儲存檔案,受到文件大小本身的限制,Byte 資料型別最多只能儲存 1 MiB - 89 bytes = 1,048,487 bytes 的檔案。Bytes 之間的排序是一個個 Byte 去比較。

Date and time,是一個包含日期與時間的資料型別,若是沒有指定時間會使用預設的 00:00:00。在排續依照時間先後順序進行,越早則越小。在 Date and time 之間的比較,精確度比較到微秒為止。

Floating-point number,即所謂的64 bit 雙精度浮點數。排序沒有意外的使用數字大小為依據。

Geographical point,這是一個滿有趣的資料型別,專門儲存經緯度。在排序上會先比較表示南北地理位置的緯度(latitude),再比較表示東西地理位置的經度(longitude)。

Integer,即 64bit 的整數,能夠儲存 -2^63 ~ 2^63 - 1 之間大小的整數。排序理所當然是依照數字大小。

Map,即儲存鍵值對(key-value pairs)的資料型別。裡面儲存的資料會依照鍵名做排序,像是就算我們是以 {c: “foo”, a: “bar”, b: “qux”} 寫入,在資料庫仍會儲存為 {a: “foo”, b: “bar”, c: “qux”}。 Map 之間的排序會先比較鍵名,再比較數值,會先比較第一組的鍵值對,如果都相同再往下一組去比對,以此類推。

Null,我還沒研究到作何用途,官方在資料型別的文件尚未特別表述,等之後研究到會再補充到這。

Reference,指向某個文件位置,官方在資料型別的文件尚未特別表述,等之後研究到會再補充到這。Reference 之間的比較是依據集合與每個文件的 ID 。

Text string,用來儲存大量文字。同 Bytes,最多可以儲存 1 MiB - 89 bytes = 1,048,487 bytes 大小的文字量。在 Text string 之間的排序是會以 UTF-8 編碼的 byte 去比較。


今天因為上台北出差,壓縮到了發文的時間,三篇發文品質可能都較為簡陋,之後會再找時間進行補充與編修。本篇可能會在研究有關的應用情境後,將其補充進來。


上一篇
Cloud Firestore β (6): 索引
下一篇
Cloud Firestore β (8): 建立資料
系列文
我或許沒那麼懂 Web31

尚未有邦友留言

立即登入留言