ตารางต่อไปนี้แสดงประเภทข้อมูล MongoDB, ไดรเวอร์ และเครื่องมือของบุคคลที่สามที่รองรับสำหรับ Cloud Firestore
ประเภทข้อมูล
| ประเภท BSON | รองรับ |
|---|---|
| จำนวนเต็ม 32 บิต | ใช่ |
| จำนวนเต็ม 64 บิต | ใช่ |
| อาร์เรย์ | ใช่ |
| ข้อมูลไบนารี | ใช่ |
| บูลีน | ใช่ |
| วันที่ | ใช่ |
| DBPointer | ไม่ |
| Decimal128 | ใช่ |
| เตียงคู่ | ใช่ |
| JavaScript | ไม่ |
| JavaScript (พร้อมขอบเขต) | ไม่ |
| MaxKey | ใช่ |
| MinKey | ใช่ |
| Null | ใช่ |
| ออบเจ็กต์ | ใช่ |
| ObjectId | ใช่ |
| นิพจน์ทั่วไป | ใช่ |
| สตริง | ใช่ |
| สัญลักษณ์ | ไม่ |
| การประทับเวลา | ใช่ |
| ไม่ระบุ | ไม่ |
เอกสาร _id
ฟิลด์ _id ระดับบนสุดในเอกสารต้องเป็นประเภทใดประเภทหนึ่งต่อไปนี้
- ObjectId
- สตริง
- จำนวนเต็ม 64 บิต
- จำนวนเต็ม 32 บิต
- เตียงคู่
- ไบนารี
- ออบเจ็กต์
- บูลีน
ขนาดรวมของ _id ต้องไม่เกิน 1,500 ไบต์
ค่าแต่ละค่าภายในรหัสประเภทออบเจ็กต์ต้องเป็นประเภทรหัสที่รองรับหรืออาร์เรย์ของค่า ซึ่งแต่ละค่าเป็นประเภทรหัสที่รองรับ
ระบบไม่รองรับ BSON ประเภทอื่นๆ
ภาษาและไดรเวอร์ MongoDB
Cloud Firestore รองรับไดรเวอร์เวอร์ชันต่อไปนี้
| Language | เวอร์ชันไดรเวอร์ |
|---|---|
| Java | 5.x |
| Node.js | 6.x 5.x |
| Python | 4.x 3.x (x ≥ 12) |
| Go | 2.x |
| C# | 3.x |
| Ruby | 2.x (x ≥ 16) |
การรองรับการตรวจสอบสิทธิ์ OIDC
ไดรเวอร์ Go, C# และ Ruby รองรับการตรวจสอบสิทธิ์ OpenID Connect (OIDC) จาก Google Cloud สำหรับไดรเวอร์ทุกเวอร์ชันที่รองรับ
ไดรเวอร์ Java, Node.js และ Python รองรับการตรวจสอบสิทธิ์ OIDC จาก Google Cloud โดยเริ่มจากไดรเวอร์เวอร์ชันต่อไปนี้
- Java: 4.10
- Node.js: 6.7
- Python: 4.7
เครื่องมือของบุคคลที่สาม
Cloud Firestore รองรับเครื่องมือของบุคคลที่สามที่อธิบายไว้ในส่วนนี้
| เครื่องมือ | คำอธิบาย | หมายเหตุ |
|---|---|---|
| mongoimport | เครื่องมือฐานข้อมูล MongoDB | ดู การโหลดข้อมูลจำนวนมาก |
| mongoexport | เครื่องมือฐานข้อมูล MongoDB | |
| mongodump | เครื่องมือฐานข้อมูล MongoDB | |
| mongorestore | เครื่องมือฐานข้อมูล MongoDB | ดู การโหลดข้อมูลจำนวนมาก |
| mongosh | MongoDB Shell | |
| Mongoose | เครื่องมือการสร้างโมเดลออบเจ็กต์ MongoDB | |
| MongoDB Compass | เครื่องมือ GUI สำหรับการสำรวจข้อมูล |
ความเข้ากันได้ของประเภท BSON และ Cloud Firestore
ส่วนนี้จะสรุปการแมประหว่างประเภท BSON ของ MongoDB กับค่า Cloud Firestore เนื่องจาก BSON เป็นรูปแบบไบนารีและ Cloud Firestore API ใช้บัฟเฟอร์โปรโตคอล บางประเภทจึงแมปโดยตรง ขณะที่บางประเภทต้องใช้การแสดงแผนที่แบบพิเศษ
ภาพรวมการแมป
ตารางต่อไปนี้แสดงความสอดคล้องของประเภทข้อมูล BSON กับการแสดงบัฟเฟอร์โปรโตคอล Cloud Firestore
การแมปโดยตรง
ประเภทเหล่านี้มีค่าที่เทียบเท่ากันโดยตรงในทั้ง 2 ระบบ
| ประเภท BSON | BSON | Cloud Firestore Proto | หมายเหตุ |
|---|---|---|---|
| Double | 1.23 |
double_value: 1.23 |
|
| สตริง | "hello" |
string_value: "hello" |
|
| วัตถุ | { |
map_value { |
|
| Array | [ |
array_value { |
|
| ไบนารี (ประเภทย่อย 0) | BinData(0, 'SGVsbG8=') |
bytes_value: "Hello" |
|
| บูลีน | true |
boolean_value: true |
|
| Null | null |
null_value: NULL_VALUE |
|
| จำนวนเต็ม 64 บิต | Long('1234567890') |
integer_value: 1234567890 |
|
| วันที่ | ISODate('2026-05-22T04:00:00Z') |
timestamp_value { |
ค่าการประทับเวลา Cloud Firestore จะจัดเก็บไว้ที่ความแม่นยำระดับไมโครวินาที แต่ค่าที่เกินความแม่นยำระดับมิลลิวินาทีจะสูญหายเมื่อแปลงเป็น BSON |
ประเภท BSON ที่แสดงเป็นแผนที่ใน Cloud Firestore API
ประเภท BSON เหล่านี้จะรวมอยู่ใน Cloud Firestore map_value พร้อมคีย์พิเศษเพื่อระบุประเภท
| ประเภท BSON | BSON | Cloud Firestore Proto | หมายเหตุ |
|---|---|---|---|
| จำนวนเต็ม 32 บิต | 123 |
map_value { |
|
| ไบนารี (ประเภทย่อยที่ไม่ใช่ 0) | BinData(1, 'AQIDBA==') |
map_value { |
ไบต์ประเภทย่อยที่เพิ่มไว้หน้าข้อมูล |
| ObjectId | ObjectId('67eea9446dc71ec469e9496a') |
map_value { |
สตริงเลขฐานสิบหกตัวพิมพ์เล็ก |
| การประทับเวลา (ภายใน) | Timestamp(123, 1) |
map_value { |
การประทับเวลาภายในของ MongoDB |
| นิพจน์ทั่วไป | RegExp('.*', 'im') |
map_value { |
|
| Min Key | MinKey() |
map_value { |
|
| Max Key | MaxKey() |
map_value { |
|
| Decimal128 | Decimal128('4E7') |
map_value { |
Cloud Firestore ประเภทที่ไม่ได้อยู่ใน BSON โดยตรง
ประเภท Cloud Firestore เหล่านี้จะแสดงเป็นแผนที่ที่มีโครงสร้างพิเศษเมื่อแปลงเป็น BSON
| ประเภท Cloud Firestore | BSON | Cloud Firestore Proto |
|---|---|---|
| GeoPoint | { |
geo_point_value { |
| Vector | { |
map_value { |
| Document Ref | { |
reference_value: "projects/.../documents/col/doc" |
ชื่อฟิลด์
ชื่อช่องจาก MongoDB ที่ตรงกับ __.*__ จะถูกยกเว้นโดยการรวม r: เมื่อจัดเก็บไว้ใน Cloud Firestore เช่น ฟิลด์ BSON __foo__ จะกลายเป็น __r:foo__ ใน Cloud Firestore
ประเภทข้อมูล BSON ใน SDK ของไคลเอ็นต์
เมื่อใช้ SDK ไคลเอ็นต์ Cloud Firestore คุณสามารถใช้คลาส SDK เฉพาะเพื่อแสดงประเภทข้อมูล BSON เช่น ทศนิยม 128 บิต นิพจน์ทั่วไป และการประทับเวลา BSON
Node.js
const { RegexValue, Decimal128Value, BsonTimestamp } = require('@google-cloud/firestore'); // Setting fields with BSON data types const res = await db.collection('foo').doc('bar').set({ regex: new RegexValue('myRegexPattern', 'i'), decimal: new Decimal128Value('0.73e-7'), bsonTimestamp: new BsonTimestamp(1732754912, 500), });
Java
import com.google.cloud.firestore.BsonTimestamp; import com.google.cloud.firestore.Decimal128Value; import com.google.cloud.firestore.RegexValue; import java.util.HashMap; import java.util.Map; Map<String, Object> data = new HashMap<>(); data.put("regex", new RegexValue("myRegexPattern", "i")); data.put("decimal", new Decimal128Value("0.73e-7")); data.put("bson_timestamp", new BsonTimestamp(1732754912, 500)); db.collection("foo").doc("bar").set(data);
Java
import com.google.firebase.firestore.BsonTimestamp; import com.google.firebase.firestore.Decimal128Value; import com.google.firebase.firestore.RegexValue; import java.util.HashMap; import java.util.Map; Map<String, Object> data = new HashMap<>(); data.put("regex", new RegexValue("myRegexPattern", "i")); data.put("decimal", new Decimal128Value("0.73e-7")); data.put("bson_timestamp", new BsonTimestamp(1732754912, 500)); db.collection("foo").doc("bar").set(data);
Go
import ( "context" "cloud.google.com/go/firestore" ) func writeBsonTypes(ctx context.Context, client *firestore.Client) error { _, err := client.Collection("foo").Doc("bar").Set(ctx, map[string]interface{}{ "regex": firestore.RegexValue{Pattern: "myRegexPattern", Options: "i"}, "decimal": firestore.Decimal128Value{Value: "0.73e-7"}, "bson_timestamp": firestore.BsonTimestamp{Seconds: 1732754912, Increment: 500}, }) return err }
ขั้นตอนถัดไป
- เรียกใช้คู่มือเริ่มใช้งานฉบับย่อ: สร้างฐานข้อมูลและเชื่อมต่อ
- ดูข้อมูลเกี่ยวกับความแตกต่างของลักษณะการทำงาน
- ดูรายละเอียดฟีเจอร์ที่รองรับตามเวอร์ชัน MongoDB ได้ที่