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

หน้านี้อธิบายประเภทข้อมูลที่ 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 (แบบปกติ)
จุดทางภูมิศาสตร์ ตามละติจูด แล้วจึงเป็นตามลองจิจูด ขณะนี้เราไม่แนะนำให้ใช้ข้อมูลประเภทนี้เนื่องจากข้อจำกัดในการค้นหา โดยทั่วไปแล้ว การจัดเก็บละติจูดและลองจิจูดเป็นฟิลด์ตัวเลขแยกกันจะดีกว่า หากแอปของคุณต้องการการค้นหาทางภูมิศาสตร์แบบง่ายตามระยะทาง โปรดดูการค้นหาทางภูมิศาสตร์
จำนวนเต็ม ตัวเลข 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