ประเภทข้อมูลที่รองรับ

หน้านี้อธิบายประเภทข้อมูลที่ Cloud Firestore รองรับ

ประเภทข้อมูล

ตารางต่อไปนี้แสดงประเภทข้อมูลที่ Cloud Firestore รองรับ นอกจากนี้ ยังอธิบายลำดับการจัดเรียงที่ใช้เมื่อเปรียบเทียบค่าประเภทเดียวกันด้วย

ประเภทข้อมูล ลำดับการจัดเรียง หมายเหตุ
อาร์เรย์ ตามค่าองค์ประกอบ

อาร์เรย์ไม่สามารถมีค่าอาร์เรย์อื่นเป็นองค์ประกอบได้

ภายในอาร์เรย์ องค์ประกอบจะยังคงตำแหน่งที่กำหนดไว้ เมื่อจัดเรียงอาร์เรย์ 2 รายการขึ้นไป ระบบจะจัดเรียงอาร์เรย์ตามค่าขององค์ประกอบ

เมื่อเปรียบเทียบอาร์เรย์ 2 รายการ ระบบจะเปรียบเทียบองค์ประกอบแรกของแต่ละอาร์เรย์ หากองค์ประกอบแรกเท่ากัน ระบบจะเปรียบเทียบองค์ประกอบที่สอง และดำเนินการต่อไปเรื่อยๆ จนกว่าจะพบความแตกต่าง หากอาร์เรย์มีองค์ประกอบไม่เพียงพอ ที่จะเปรียบเทียบ แต่เท่ากันจนถึงจุดนั้น ระบบจะจัดเรียงอาร์เรย์ที่สั้นกว่า ก่อนอาร์เรย์ที่ยาวกว่า

เช่น [1, 2, 3] < [1, 2, 3, 1] < [2] อาร์เรย์ [2] มีค่าองค์ประกอบแรกสูงสุด อาร์เรย์ [1, 2, 3] มีองค์ประกอบเท่ากับ 3 องค์ประกอบแรก ของ [1, 2, 3, 1] แต่มีความยาวสั้นกว่า

บูลีน false < true
ไบต์ ลำดับไบต์ สูงสุด 1,048,487 ไบต์ (1 MiB - 89 ไบต์) คำค้นหาจะพิจารณาเฉพาะ 1,500 ไบต์แรก
วันที่และเวลา ตามลำดับเวลา เมื่อจัดเก็บใน Cloud Firestore จะมีความแม่นยำถึงระดับไมโครวินาทีเท่านั้น ความแม่นยำเพิ่มเติมจะปัดเศษลง
เลขจุดลอยตัว ตัวเลข ความแม่นยำแบบทศนิยมคู่ 64 บิตตาม IEEE 754 รวมถึง (ค่าปกติ) NaN และ +/-Infinity
จุดทางภูมิศาสตร์ ตามละติจูด แล้วจึงเป็นตามลองจิจูด ขณะนี้เราไม่แนะนำให้ใช้ข้อมูลประเภทนี้เนื่องจากข้อจำกัดในการค้นหา โดยทั่วไปแล้ว การจัดเก็บละติจูดและลองจิจูดเป็นฟิลด์ตัวเลขแยกกันจะดีกว่า หากแอปของคุณต้องการ GeoQuery แบบง่ายตามระยะทาง โปรดดูGeoQuery
จำนวนเต็ม ตัวเลข 64 บิต มีการลงนาม
แผนที่ ตามคีย์ แล้วตามค่า

แสดงออบเจ็กต์ที่ฝังไว้ในเอกสาร เมื่อจัดทำดัชนีแล้ว คุณจะค้นหา ในฟิลด์ย่อยได้ หากคุณยกเว้นค่านี้จากการจัดทำดัชนี ระบบจะยกเว้นฟิลด์ย่อยทั้งหมด จากการจัดทำดัชนีด้วย

ระบบจะจัดเรียงคีย์การเรียงลำดับเสมอ เช่น หากคุณเขียน {c: "foo", a: "bar", b: "qux"} ระบบจะจัดเรียงแผนที่ตามคีย์และ บันทึกเป็น {a: "bar", b: "qux", c: "foo"}

ฟิลด์แผนที่จะจัดเรียงตามคีย์และเปรียบเทียบตามคู่คีย์-ค่า โดยจะเปรียบเทียบคีย์ก่อน แล้วจึงเปรียบเทียบค่า หากคู่คีย์-ค่าแรกเท่ากัน ระบบจะเปรียบเทียบคู่คีย์-ค่าถัดไป และดำเนินการต่อไปเรื่อยๆ หากแผนที่ 2 รายการมีคู่คีย์-ค่าเหมือนกันทั้งหมด ระบบจะพิจารณาความยาวของแผนที่ ตัวอย่างเช่น แผนที่ต่อไปนี้เรียงตามลำดับจากน้อยไปมาก

{a: "aaa", b: "baz"}
{a: "foo", b: "bar"}
{a: "foo", b: "bar", c: "qux"}
{a: "foo", b: "baz"}
{b: "aaa", c: "baz"}
{c: "aaa"}

Null ไม่มี
ข้อมูลอ้างอิง ตามองค์ประกอบเส้นทาง (คอลเล็กชัน, รหัสเอกสาร, คอลเล็กชัน, รหัสเอกสาร...) เช่น projects/[PROJECT_ID]/databases/[DATABASE_ID]/documents/[DOCUMENT_PATH]
สตริงข้อความ ลำดับไบต์ที่เข้ารหัส UTF-8 สูงสุด 1,048,487 ไบต์ (1 MiB - 89 ไบต์) การค้นหาจะพิจารณาเฉพาะไบต์แรก 1,500 ไบต์ของ การแสดง UTF-8
Vector ตามมิติข้อมูล แล้วตามค่าองค์ประกอบแต่ละรายการ มิติข้อมูลการฝังสูงสุดที่รองรับคือ 2048 หากต้องการจัดเก็บเวกเตอร์ที่มี มิติข้อมูลขนาดใหญ่ ให้ใช้ การลดมิติ

การจัดเรียงประเภทค่า

เมื่อการค้นหามีฟิลด์ที่มีค่าเป็นประเภทผสม Cloud Firestore จะใช้การจัดลำดับที่แน่นอนตามการแสดงภายใน รายการต่อไปนี้แสดงลำดับ

  1. ค่า Null
  2. ค่าบูลีน
  3. ค่าจำนวนเต็มและค่าจุดลอยตัวที่จัดเรียงตามลำดับตัวเลข
  4. ค่าวันที่
  5. ค่าสตริงข้อความ
  6. ค่าไบต์
  7. Cloud Firestore การอ้างอิง
  8. ค่าจุดทางภูมิศาสตร์
  9. ค่าอาร์เรย์
  10. การฝังเวกเตอร์
  11. ค่าแผนที่

การจัดเรียงตัวเลข

Cloud Firestore จะจัดเรียงค่าตัวเลขทั้งหมด (Integer & Floating point) สลับกัน การเปรียบเทียบจำนวนทศนิยมเป็นไปตามลำดับทั้งหมดของ IEEE 754 โดยมีข้อยกเว้นที่สำคัญคือ Cloud Firestore จะปรับค่า NaN ทั้งหมดให้เป็นค่าปกติ และถือว่าค่าน้อยกว่า -Infinity