行為差異
本頁說明與 MongoDB 相容的 Firestore 和 MongoDB 之間的行為差異。如要瞭解各 MongoDB 版本支援的功能,請參閱:
連線和資料庫
- 每個連線只能連至一個與 MongoDB 相容的 Firestore 資料庫。
- 您必須先建立資料庫,才能連線至該資料庫。
命名
為資料模型命名時,請注意以下差異。
集合
- 系統不支援與
__.*__
相符的集合名稱。
欄位
- 系統不支援與
__.*__
相符的欄位名稱。 - 系統不支援空白欄位名稱。
文件
- 文件大小上限為 4 MiB。
- 欄位的巢狀結構深度上限為 20。每個陣列和物件型別的欄位都會增加一個層級的整體深度。
_id
- 文件
_id
(頂層欄位) 必須是 ObjectId、字串或 64 位元整數。系統不支援其他 BSON 類型。 - 系統不支援空字串 ("") 和 64 位元 0 (0L)。
值
- 系統不支援 JavaScript、Symbol、DBPointer 和 Undefined BSON 類型。
日期
- 日期值必須介於
[0001-01-01T00:00:00Z, 9999-12-31T23:59:59Z]
之間。
Decimal128
- 寫入時,系統會將
NaN
、正無限大和負無限大值正規化。 - 系統不支援對 Decimal128 執行算術運算。
雙精度值
NaN
值會在寫入時經過正規化處理。
規則運算式
- 規則運算式選項必須有效 (「i」、「m」、「s」、「u」或「x」),且須按字母順序提供,不得重複。
查詢
- 自然排序順序 (沒有明確排序的查詢) 與插入順序或依遞增排序的順序不符。
_id
匯總資料
- 最多只能有 250 個階段。
- 系統不支援
$merge
和$out
階段。如需支援的階段和運算子完整清單,請參閱「指令」一節。
寫入
- 如果文件名稱開頭為貨幣符號「$」,則無法使用
update
或findAndModify
的 upsert 功能建立文件。 - 請確認連線字串包含
retryWrites=false
(或使用適合驅動程式的方法),確保驅動程式不會嘗試使用這項功能。系統不支援可重試的寫入作業。
交易
- 系統不支援快照交易。
- 交易會使用悲觀並行控制,並進行鎖定。為避免鎖定爭用,請限制交易中讀取的資料量。
索引
- 系統不支援萬用字元索引。
- 不支援唯一索引
- 與 MongoDB 相容的 Firestore 不會自動在
_id
上建立索引,但可確保_id
的值在集合中是唯一的。 - 如果索引未啟用多鍵功能,系統不會根據寫入作業自動將其變更為多鍵索引。建立索引時,您必須啟用多鍵,且無法變更此選項。
讀取疑慮
- 系統僅支援
majority
讀取關注層級。
寫入疑慮
- 系統僅支援
w: 'majority'
和w: 1
寫入疑慮。
讀取偏好設定
- 僅支援
primary
、primaryPreferred
、primary_preferred
、secondary_preferred
和nearest
讀取關注事項。
錯誤
- 與 MongoDB 相容的 Firestore 和 MongoDB 之間的錯誤代碼和訊息可能有所不同。
指令
下列行為差異適用於特定指令。
- 下表未列出的指令均不支援。
- 大多數指令都會接受
maxTimeMS
,但可能會忽略。
查詢和寫入
指令 | 不支援的欄位 |
---|---|
|
|
|
|
|
|
|
|
|
在刪除陳述式中:
|
|
|
|
|
|
|
|
|
|
(無) |
交易和工作階段
指令 | 不支援的欄位 |
---|---|
|
|
|
|
|
(無) |
管理
指令 | 不支援的欄位 | 附註 |
---|---|---|
|
|
如果提供 filter ,則必須留空。 |
|
|
如果提供 authorizedCollections ,則必須為 false。 |
|
|
|
|
|
這個指令是空運算。 如果提供 capped ,則必須為 false。 |
後續步驟
- 執行「快速入門:建立並連線至資料庫」。
- 如需支援功能的完整清單,請參閱「支援的 MongoDB 資料類型、驅動程式和功能」。