ความแตกต่างของลักษณะการทำงาน

เกี่ยวข้องกับ 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 ใช้ได้กับคำสั่งส่วนใหญ่ แต่ระบบอาจไม่สนใจ

การค้นหาและการเขียน

คำสั่ง ฟิลด์ที่ไม่รองรับ

find

  • comment
  • readConcern
  • max
  • min
  • returnKey
  • showRecordId
  • tailable
  • oplogReplay
  • noCursorTimeout
  • awaitData
  • allowPartialResults
  • collation
  • allowDiskUsage
  • let

aggregate

  • bypassDocumentValidation
  • readConcern
  • collation
  • hint
  • comment
  • let

insert

  • bypassDocumentValidation
  • comment

update

  • collation
  • arrayFilters
  • hint

delete

  • comment
  • write

ภายในคำสั่งลบ

  • collation
  • hint

findAndModify

  • fields
  • bypassDocumentValidation
  • collation
  • arrayFilters
  • hint
  • comment
  • let

count

  • hint
  • readConcern
  • collation
  • comment

distinct

  • readConcern
  • collation
  • comment
  • hint

getMore

  • comment

killCursors

(ไม่มี)

ธุรกรรมและเซสชัน

คำสั่ง ฟิลด์ที่ไม่รองรับ

commitTransaction

  • comment

abortTransaction

  • comment

endSessions

(ไม่มี)

การบริหารจัดการ

คำสั่ง ฟิลด์ที่ไม่รองรับ หมายเหตุ

listDatabases

  • authorizedDatabases
  • comment
filter ต้องว่างเปล่าหากมีการระบุ

listCollections

  • comment
authorizedCollections ต้องเป็น "false" หากระบุ

listIndexes

  • comment

createCollection

  • timeseries
  • expireAfterSeconds
  • clusteredIndex
  • changeStreamPreAndPostImages
  • size
  • max
  • storageEngine
  • validator
  • validationLevel
  • validationAction
  • indexOptionDefaults
  • viewOn
  • pipeline
  • collation
  • writeConcern
  • encryptedFields
  • comment
คำสั่งนี้ไม่มีผล

capped ต้องเป็นเท็จหากระบุ

ขั้นตอนถัดไป