เกี่ยวข้องกับ Cloud Firestore Enterprise Edition เท่านั้น |
หน้านี้อธิบายความแตกต่างด้านลักษณะการทำงานระหว่าง Cloud Firestore ที่มีความเข้ากันได้กับ MongoDB และ MongoDB
ดูรายละเอียดฟีเจอร์ที่รองรับตามเวอร์ชันของ MongoDB ได้ที่
การเชื่อมต่อและฐานข้อมูล
- การเชื่อมต่อแต่ละครั้งจะจำกัดไว้ที่ Cloud Firestore ที่มีฐานข้อมูลความเข้ากันได้ของ MongoDB เพียงรายการเดียว
- คุณต้องสร้างฐานข้อมูลก่อนเชื่อมต่อ
การตั้งชื่อ
ความแตกต่างต่อไปนี้ใช้กับการตั้งชื่อส่วนต่างๆ ของโมเดลข้อมูล
คอลเล็กชัน
- ระบบไม่รองรับชื่อคอลเล็กชันที่ตรงกับ
__.*__
ช่อง
- ระบบไม่รองรับชื่อช่องที่ตรงกับ
__.*__
- ไม่รองรับชื่อช่องที่ว่างเปล่า
เอกสาร
- ขนาดเอกสารสูงสุดคือ 4 MiB
- ความลึกในการฝังฟิลด์สูงสุดคือ 20 ฟิลด์ประเภทอาร์เรย์และออบเจ็กต์ แต่ละรายการจะเพิ่มระดับความลึกโดยรวม 1 ระดับ
_id
- เอกสาร
_id
(ฟิลด์ระดับบนสุด) ต้องเป็น ObjectId, สตริง หรือจำนวนเต็ม 64 บิต ระบบไม่รองรับ BSON ประเภทอื่นๆ - ระบบไม่รองรับสตริงว่าง ("") และ 0 แบบ 64 บิต (0L)
ค่า
- ระบบไม่รองรับประเภท BSON ของ JavaScript, Symbol, DBPointer และ Undefined
วันที่
- ค่าวันที่ต้องอยู่ใน
[0001-01-01T00:00:00Z, 9999-12-31T23:59:59Z]
Decimal128
- ระบบจะแปลงค่า
NaN
, ค่าอนันต์บวก และค่าอนันต์ลบ ให้เป็นรูปแบบมาตรฐานเมื่อเขียน - ไม่รองรับการดำเนินการทางคณิตศาสตร์ใน Decimal128
เตียงคู่
- ระบบจะแปลงค่า
NaN
เป็นรูปแบบมาตรฐานเมื่อเขียน
นิพจน์ทั่วไป
- ตัวเลือกนิพจน์ทั่วไปต้องถูกต้อง ("i", "m", "s", "u" หรือ "x") และระบุตามลำดับตัวอักษรโดยไม่มีการทำซ้ำ
คำค้นหา
- ลำดับการจัดเรียงตามธรรมชาติ (การค้นหาที่ไม่มีการจัดเรียงอย่างชัดเจน) ไม่ตรงกับ
ลำดับการแทรกหรือการจัดเรียงตาม
_id
จากน้อยไปมาก
การรวม
- การรวมจะจำกัดไว้ที่ 250 ขั้นตอน
- ไม่รองรับขั้นตอน
$merge
และ$out
ดูรายการขั้นตอนและโอเปอเรเตอร์ทั้งหมดที่รองรับได้ในส่วนคำสั่ง $lookup
ขั้นตอนจะจำกัดไว้ที่การระบุforeignField
ใน_id
การเขียน
- เอกสารที่มีชื่อขึ้นต้นด้วยเครื่องหมายดอลลาร์ ("$") จะสร้างโดยใช้ฟีเจอร์ Upsert ของ
update
หรือfindAndModify
ไม่ได้ - ตรวจสอบว่าสตริงการเชื่อมต่อ
มี
retryWrites=false
(หรือใช้วิธีที่เหมาะสมกับไดรเวอร์ของคุณ) เพื่อให้แน่ใจว่าไดรเวอร์จะไม่พยายามใช้ฟีเจอร์นี้ ระบบไม่รองรับการเขียนที่ลองใหม่ได้
ธุรกรรม
รองรับการแยกสแนปชอตและธุรกรรมที่ทำให้เป็นอนุกรมได้
โดยค่าเริ่มต้น ธุรกรรมจะใช้การควบคุมการทำงานพร้อมกันแบบมองโลกในแง่ดี ที่มีการแยกสแนปชอต
ระดับความสอดคล้องในการอ่าน
Cloud Firestore ที่เข้ากันได้กับ MongoDB รองรับระดับความสอดคล้องในการอ่าน
snapshot
majority
และlinearizable
ค่าเริ่มต้นคือsnapshot
ซึ่งหมายถึงการแยกสแนปชอตใช้
linearizable
เมื่อแอปพลิเคชันต้องการความสอดคล้องที่เข้มงวด และต้องป้องกันความผิดปกติของการเขียน สำหรับภาระงานอื่นๆsnapshot
จะช่วยปรับปรุงประสิทธิภาพและลดการแย่งกันทำธุรกรรมได้
ความกังวลในการเขียน
- รองรับเฉพาะระดับความสอดคล้องในการเขียน
w: 'majority'
และw: 1
ค่ากำหนดการอ่าน
- ระบบรองรับเฉพาะข้อกังวลเกี่ยวกับการอ่าน
primary
,primaryPreferred
,primary_preferred
,secondary_preferred
และnearest
ดัชนี
- ไม่รองรับดัชนีไวลด์การ์ด
- Cloud Firestore ที่เข้ากันได้กับ MongoDB จะไม่สร้างดัชนีใน
_id
โดยอัตโนมัติ แต่จะตรวจสอบว่าค่าของ_id
ไม่ซ้ำกันภายในคอลเล็กชัน - ระบบจะไม่เปลี่ยนดัชนีที่ไม่ได้เปิดใช้แบบหลายคีย์เป็นดัชนีแบบหลายคีย์โดยอัตโนมัติ ตามการดำเนินการเขียน คุณต้องเปิดใช้หลายคีย์เมื่อ สร้างดัชนี และจะเปลี่ยนตัวเลือกไม่ได้
ข้อผิดพลาด
- รหัสและข้อความแสดงข้อผิดพลาดอาจแตกต่างกันระหว่าง Cloud Firestore ที่รองรับ MongoDB กับ MongoDB
คำสั่ง
ความแตกต่างของลักษณะการทำงานต่อไปนี้ใช้กับคำสั่งที่เฉพาะเจาะจง
- ระบบไม่รองรับคำสั่งที่ไม่ได้แสดงในตารางต่อไปนี้
maxTimeMS
ใช้ได้กับคำสั่งส่วนใหญ่ แต่ระบบอาจไม่สนใจ
การค้นหาและการเขียน
คำสั่ง | ฟิลด์ที่ไม่รองรับ |
---|---|
|
|
|
|
|
|
|
|
|
ภายในคำสั่งลบ
|
|
|
|
|
|
|
|
|
|
(ไม่มี) |
ธุรกรรมและเซสชัน
คำสั่ง | ฟิลด์ที่ไม่รองรับ |
---|---|
|
|
|
|
|
(ไม่มี) |
การบริหารจัดการ
คำสั่ง | ฟิลด์ที่ไม่รองรับ | หมายเหตุ |
---|---|---|
|
|
filter ต้องว่างเปล่าหากมีการระบุ |
|
|
authorizedCollections ต้องเป็น "false" หากระบุ |
|
|
|
|
|
คำสั่งนี้ไม่มีผลcapped ต้องเป็นเท็จหากระบุ |
ขั้นตอนถัดไป
- เรียกใช้เริ่มต้นอย่างรวดเร็ว: สร้างฐานข้อมูลและเชื่อมต่อกับฐานข้อมูล
- ดูรายการฟีเจอร์ที่รองรับทั้งหมดได้ที่ประเภทข้อมูล ไดรเวอร์ และฟีเจอร์ MongoDB ที่รองรับ