Cloud Firestore เป็นฐานข้อมูล NoSQL ที่เน้นเอกสาร ซึ่งต่างจากฐานข้อมูล SQL ไม่มีตารางหรือแถว แต่คุณจะจัดเก็บข้อมูลไว้ในเอกสาร ซึ่งก็คือ จัดระเบียบเป็นคอลเล็กชัน
document แต่ละรายการจะมีชุดคู่คีย์-ค่า Cloud Firestore คือ เหมาะสำหรับการจัดเก็บคอลเล็กชันขนาดใหญ่ของเอกสารขนาดเล็ก
เอกสารทั้งหมดต้องเก็บไว้ในคอลเล็กชัน เอกสารสามารถประกอบด้วย subcollections และออบเจ็กต์ที่ซ้อนกัน ซึ่งทั้งคู่อาจมีช่องพื้นฐาน เช่น สตริงหรือออบเจ็กต์ที่ซับซ้อนอย่างรายการ
คอลเล็กชันและเอกสารจะสร้างขึ้นโดยปริยายใน Cloud Firestore เพียงกำหนดข้อมูลให้กับเอกสารภายในคอลเล็กชัน หากคอลเล็กชัน หรือไม่มีเอกสาร Cloud Firestore จะสร้างเอกสารขึ้น
เอกสาร
ใน Cloud Firestore หน่วยของพื้นที่เก็บข้อมูลคือเอกสาร เอกสารคือ เรคคอร์ดขนาดเล็กที่มีฟิลด์ซึ่งจับคู่กับค่า เอกสารแต่ละรายการ ที่ระบุด้วยชื่อ
เอกสารที่แทนผู้ใช้ alovelace
อาจมีลักษณะเช่นนี้
แอโลเวเลซ
first : "Ada"
last : "Lovelace"
born : 1815
วัตถุที่ซับซ้อนที่ซ้อนอยู่ในเอกสารเรียกว่าแผนที่ ตัวอย่างเช่น คุณสามารถ จัดโครงสร้างชื่อผู้ใช้จากตัวอย่างข้างต้นด้วยแผนที่ ดังนี้
แอโลเวเลซ
name :
first : "Ada"
last : "Lovelace"
born : 1815
คุณอาจสังเกตเห็นว่าเอกสารคล้ายกับ JSON มาก จริงๆ แล้ว หลักๆ แล้วก็เป็นเช่นนั้น จะมีความแตกต่างอยู่บ้าง (เช่น เอกสารรองรับข้อมูลประเภทเพิ่มเติมและ จำกัดอยู่ที่ 1 MB) แต่โดยทั่วไป คุณสามารถดำเนินการกับเอกสาร ระเบียน JSON ขนาดเล็ก
คอลเล็กชัน
เอกสารจะอยู่ในคอลเล็กชัน ซึ่งเป็นคอนเทนเนอร์สำหรับเอกสาร สำหรับ
ตัวอย่างเช่น คุณอาจมีคอลเล็กชัน users
สำหรับเก็บข้อมูลผู้ใช้ต่างๆ โดยผู้ใช้แต่ละคน
แสดงด้วยเอกสาร:
ผู้ใช้
รายแอโลเวเลซ
first : "Ada"
last : "Lovelace"
born : 1815
การแข่งขัน
first : "Alan"
last : "Turing"
born : 1912
Cloud Firestore เป็นแบบไร้สคีมา คุณจึงมีอิสระอย่างสมบูรณ์ในการ ช่องที่คุณใส่ไว้ในเอกสารแต่ละฉบับ และประเภทข้อมูลที่จัดเก็บในช่องเหล่านั้น เอกสารภายในคอลเล็กชันเดียวกันอาจมีฟิลด์หรือร้านค้าที่แตกต่างกันได้ ประเภทต่างๆ ในฟิลด์เหล่านั้น อย่างไรก็ตาม ขอแนะนำให้คุณใช้ ฟิลด์และประเภทข้อมูลเดียวกันในเอกสารหลายฉบับ ดังนั้นคุณสามารถค้นหา เอกสารได้ง่ายขึ้น
โดยคอลเล็กชันจะมีเอกสารและไม่มีข้อมูลอื่นใดอีก ต้องไม่มีไฟล์ข้อมูล RAW โดยตรง ด้วยค่า และต้องไม่มีคอลเล็กชันอื่นๆ (ดูลำดับชั้น ข้อมูลสำหรับคำอธิบายวิธีจัดโครงสร้างที่ซับซ้อนยิ่งขึ้น ในภาษาCloud Firestore)
ชื่อเอกสารภายในคอลเล็กชันจะไม่ซ้ำกัน คุณสามารถระบุ เช่น User-ID หรือให้ Cloud Firestore สร้างรหัสแบบสุ่มก็ได้ ให้คุณโดยอัตโนมัติ
คุณไม่จำเป็นต้อง "สร้าง" หรือ "ลบ" คอลเล็กชัน หลังจากสร้างโฆษณาแรก เอกสารในคอลเล็กชัน มีคอลเล็กชันนั้นอยู่ ถ้าคุณลบรายการทั้งหมด เอกสารในคอลเล็กชัน เอกสารนั้นไม่มีอยู่อีกต่อไป
รายการอ้างอิง
เอกสารทุกฉบับใน Cloud Firestore ได้รับการระบุตำแหน่งโดยไม่ซ้ำกัน
ภายในฐานข้อมูล ตัวอย่างก่อนหน้านี้แสดงเอกสาร alovelace
ภายใน
คอลเล็กชัน users
หากต้องการอ้างอิงถึงตำแหน่งนี้ในโค้ดของคุณ คุณสามารถสร้าง
การอ้างอิงถึงข้อมูลนั้น
Web
import { doc } from "firebase/firestore"; const alovelaceDocumentRef = doc(db, 'users', 'alovelace');
Web
var alovelaceDocumentRef = db.collection('users').doc('alovelace');
Swift
let alovelaceDocumentRef = db.collection("users").document("alovelace")
Objective-C
FIRDocumentReference *alovelaceDocumentRef = [[self.db collectionWithPath:@"users"] documentWithPath:@"alovelace"];
Kotlin+KTX
val alovelaceDocumentRef = db.collection("users").document("alovelace")
Java
DocumentReference alovelaceDocumentRef = db.collection("users").document("alovelace");
Dart
final alovelaceDocumentRef = db.collection("users").doc("alovelace");
Java
Python
Python
C++
DocumentReference alovelace_document_reference = db->Collection("users").Document("alovelace");
Node.js
Go
PHP
PHP
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการติดตั้งและสร้างไคลเอ็นต์ Cloud Firestore โปรดดูที่ ไลบรารีไคลเอ็นต์ Cloud Firestore รายการ
Unity
DocumentReference documentRef = db.Collection("users").Document("alovelace");
C#
C#
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการติดตั้งและสร้างไคลเอ็นต์ Cloud Firestore โปรดดูที่ ไลบรารีไคลเอ็นต์ Cloud Firestore รายการ
Ruby
การอ้างอิงคือวัตถุน้ำหนักเบาที่ชี้ไปยังตำแหน่งใน ฐานข้อมูล คุณสามารถสร้างข้อมูลอ้างอิงได้ไม่ว่าจะมีข้อมูลที่นั่นหรือไม่ และ การสร้างข้อมูลอ้างอิงจะไม่ดำเนินการของเครือข่ายใดๆ
คุณยังสร้างการอ้างอิงไปยังคอลเล็กชันได้ด้วย โดยทำดังนี้
Web
import { collection } from "firebase/firestore"; const usersCollectionRef = collection(db, 'users');
Web
var usersCollectionRef = db.collection('users');
Swift
let usersCollectionRef = db.collection("users")
Objective-C
FIRCollectionReference *usersCollectionRef = [self.db collectionWithPath:@"users"];
Kotlin+KTX
val usersCollectionRef = db.collection("users")
Java
CollectionReference usersCollectionRef = db.collection("users");
Dart
final usersCollectionRef = db.collection("users");
Java
Python
Python
C++
CollectionReference users_collection_reference = db->Collection("users");
Node.js
Go
PHP
PHP
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการติดตั้งและสร้างไคลเอ็นต์ Cloud Firestore โปรดดูที่ ไลบรารีไคลเอ็นต์ Cloud Firestore รายการ
Unity
CollectionReference collectionRef = db.Collection("users");
C#
C#
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการติดตั้งและสร้างไคลเอ็นต์ Cloud Firestore โปรดดูที่ ไลบรารีไคลเอ็นต์ Cloud Firestore รายการ
Ruby
เพื่อความสะดวก คุณสามารถสร้างการอ้างอิงด้วยการระบุเส้นทางไปยัง
เอกสารหรือคอลเล็กชันเป็นสตริง โดยมีคอมโพเนนต์เส้นทางคั่นด้วยการส่งต่อ
เครื่องหมายทับ (/
) ตัวอย่างเช่น หากต้องการสร้างการอ้างอิงไปยังเอกสาร alovelace
ให้ทำดังนี้
Web
import { doc } from "firebase/firestore"; const alovelaceDocumentRef = doc(db, 'users/alovelace');
Web
var alovelaceDocumentRef = db.doc('users/alovelace');
Swift
let aLovelaceDocumentReference = db.document("users/alovelace")
Objective-C
FIRDocumentReference *aLovelaceDocumentReference = [self.db documentWithPath:@"users/alovelace"];
Kotlin+KTX
val alovelaceDocumentRef = db.document("users/alovelace")
Java
DocumentReference alovelaceDocumentRef = db.document("users/alovelace");
Dart
final aLovelaceDocRef = db.doc("users/alovelace");
Java
Python
Python
C++
DocumentReference alovelace_document = db->Document("users/alovelace");
Node.js
Go
PHP
PHP
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการติดตั้งและสร้างไคลเอ็นต์ Cloud Firestore โปรดดูที่ ไลบรารีไคลเอ็นต์ Cloud Firestore รายการ
Unity
DocumentReference documentRef = db.Document("users/alovelace");
C#
C#
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการติดตั้งและสร้างไคลเอ็นต์ Cloud Firestore โปรดดูที่ ไลบรารีไคลเอ็นต์ Cloud Firestore รายการ
Ruby
ข้อมูลลำดับชั้น
หากต้องการทำความเข้าใจวิธีการทำงานของโครงสร้างข้อมูลตามลำดับชั้นใน Cloud Firestore ให้ดูตัวอย่างแอปแชทที่มีข้อความและห้องแชท
คุณสามารถสร้างคอลเล็กชันชื่อ rooms
เพื่อเก็บห้องแชทต่างๆ ได้ดังนี้
ห้องแชท
ห้อง A
name : "my chat room"
ห้อง B
...
เมื่อมีห้องแชทแล้ว ลองตัดสินใจเลือกวิธีจัดเก็บข้อความ คุณอาจ ต้องการเก็บไว้ในเอกสารของห้องแชท เอกสารใน Cloud Firestore ควรมีขนาดเล็ก และห้องแชทอาจมีข้อความจำนวนมาก แต่คุณสามารถสร้างคอลเล็กชันเพิ่มเติมภายในเอกสารของห้องแชทได้ เป็นคอลเล็กชันย่อย
คอลเล็กชันย่อย
วิธีที่ดีที่สุดในการจัดเก็บข้อความในสถานการณ์นี้คือการใช้คอลเล็กชันย่อย ต คอลเล็กชันย่อยคือคอลเล็กชันที่เชื่อมโยงกับเอกสารหนึ่งๆ
คุณสามารถสร้างคอลเล็กชันย่อยชื่อ messages
สําหรับเอกสารทั้งหมดของห้องแชทใน
คอลเล็กชัน rooms
ของคุณ:
ห้องแชท
ห้อง A
name : "my chat room"
ข้อความ
ข้อความ1
from : "alex"
msg : "Hello World!"
ข้อความ2
...
ห้อง B
...
ในตัวอย่างนี้ คุณจะสร้างการอ้างอิงไปยังข้อความในคอลเล็กชันย่อย ด้วยรหัสต่อไปนี้
Web
import { doc } from "firebase/firestore"; const messageRef = doc(db, "rooms", "roomA", "messages", "message1");
Web
var messageRef = db.collection('rooms').doc('roomA') .collection('messages').doc('message1');
Swift
let messageRef = db .collection("rooms").document("roomA") .collection("messages").document("message1")
Objective-C
FIRDocumentReference *messageRef = [[[[self.db collectionWithPath:@"rooms"] documentWithPath:@"roomA"] collectionWithPath:@"messages"] documentWithPath:@"message1"];
Kotlin+KTX
val messageRef = db .collection("rooms").document("roomA") .collection("messages").document("message1")
Java
DocumentReference messageRef = db .collection("rooms").document("roomA") .collection("messages").document("message1");
Dart
final messageRef = db .collection("rooms") .doc("roomA") .collection("messages") .doc("message1");
Java
Python
Python
C++
DocumentReference message_reference = db->Collection("rooms") .Document("roomA") .Collection("messages") .Document("message1");
Node.js
Go
PHP
PHP
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการติดตั้งและสร้างไคลเอ็นต์ Cloud Firestore โปรดดูที่ ไลบรารีไคลเอ็นต์ Cloud Firestore รายการ
Unity
DocumentReference documentRef = db .Collection("Rooms").Document("RoomA") .Collection("Messages").Document("Message1");
C#
C#
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการติดตั้งและสร้างไคลเอ็นต์ Cloud Firestore โปรดดูที่ ไลบรารีไคลเอ็นต์ Cloud Firestore รายการ
Ruby
โปรดสังเกตรูปแบบที่สลับกันของคอลเล็กชันและเอกสาร คอลเล็กชันของคุณ และเอกสารต้องเป็นไปตามรูปแบบนี้เสมอ คุณอ้างอิงคอลเล็กชันไม่ได้ ในคอลเล็กชันหรือเอกสารในเอกสาร
คอลเล็กชันย่อยช่วยให้คุณจัดโครงสร้างข้อมูลตามลําดับชั้น ช่วยให้ข้อมูล
สิทธิ์การเข้าถึง หากต้องการรับข้อความทั้งหมดใน roomA
คุณก็สร้างข้อมูลอ้างอิงคอลเล็กชันได้
ไปยังคอลเล็กชันย่อย messages
และโต้ตอบกับคอลเล็กชันนั้นในลักษณะเดียวกับที่ทำ
และข้อมูลอ้างอิงของคอลเล็กชัน
เอกสารในคอลเล็กชันย่อยก็จะมีคอลเล็กชันย่อยได้เช่นกัน ซึ่งจะช่วยให้คุณดำเนินการต่อไปนี้ได้ ข้อมูล Nest เพิ่มเติม คุณสามารถซ้อนข้อมูลได้ถึง 100 ระดับ