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

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

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

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

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

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

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

เมื่อเปรียบเทียบอาร์เรย์ 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 เท่านั้น
เวกเตอร์ ตามมิติข้อมูล แล้วตามค่าองค์ประกอบแต่ละรายการ มิติข้อมูลการฝังสูงสุดที่รองรับคือ 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