From 203f6940c6de1ec6ba6cee385fce95eb1c5948c7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Tamarelle?= Date: Fri, 23 Oct 2026 19:21:22 +0200 Subject: [PATCH] Document duplicate keys behavior in BSON documents --- reference/mongodb/bson/document/fromjson.xml | 1 + reference/mongodb/bson/document/get.xml | 6 +++++ .../mongodb/bson/document/getiterator.xml | 6 +++++ reference/mongodb/bson/document/offsetget.xml | 6 +++++ .../bson/document/tocanonicalextendedjson.xml | 1 + .../bson/document/torelaxedextendedjson.xml | 1 + reference/mongodb/entities.mongodb.ent | 25 ++++++++++++++++--- reference/mongodb/functions/bson/fromjson.xml | 1 + .../bson/tocanonicalextendedjson.xml | 1 + reference/mongodb/functions/bson/tojson.xml | 1 + .../functions/bson/torelaxedextendedjson.xml | 1 + 11 files changed, 46 insertions(+), 4 deletions(-) diff --git a/reference/mongodb/bson/document/fromjson.xml b/reference/mongodb/bson/document/fromjson.xml index ea074b822..24b17e15d 100644 --- a/reference/mongodb/bson/document/fromjson.xml +++ b/reference/mongodb/bson/document/fromjson.xml @@ -39,6 +39,7 @@ Returns a new MongoDB\BSON\Document instance. + &mongodb.note.duplicate-keys.fromjson; diff --git a/reference/mongodb/bson/document/get.xml b/reference/mongodb/bson/document/get.xml index 6548b1e81..2d3da9d00 100644 --- a/reference/mongodb/bson/document/get.xml +++ b/reference/mongodb/bson/document/get.xml @@ -42,6 +42,12 @@ MongoDB\BSON\Int64 instance. + + + If the document contains duplicate keys, the value of the first matching key + is returned. + + diff --git a/reference/mongodb/bson/document/getiterator.xml b/reference/mongodb/bson/document/getiterator.xml index ddf84822d..851fdea3e 100644 --- a/reference/mongodb/bson/document/getiterator.xml +++ b/reference/mongodb/bson/document/getiterator.xml @@ -26,6 +26,12 @@ Returns a MongoDB\BSON\Iterator instance that can be used to iterate over all keys in the document. + + + If the document contains duplicate keys, the iterator returns every + element in the original order. + + diff --git a/reference/mongodb/bson/document/offsetget.xml b/reference/mongodb/bson/document/offsetget.xml index 6d3b546a1..c43f0765b 100644 --- a/reference/mongodb/bson/document/offsetget.xml +++ b/reference/mongodb/bson/document/offsetget.xml @@ -42,6 +42,12 @@ MongoDB\BSON\Int64 instance. + + + If the document contains duplicate keys, the value of the first matching key + is returned. + + diff --git a/reference/mongodb/bson/document/tocanonicalextendedjson.xml b/reference/mongodb/bson/document/tocanonicalextendedjson.xml index 55413c48d..30815e5c1 100644 --- a/reference/mongodb/bson/document/tocanonicalextendedjson.xml +++ b/reference/mongodb/bson/document/tocanonicalextendedjson.xml @@ -35,6 +35,7 @@ Canonical Extended JSON representation of the BSON document. + &mongodb.note.duplicate-keys.tojson; diff --git a/reference/mongodb/bson/document/torelaxedextendedjson.xml b/reference/mongodb/bson/document/torelaxedextendedjson.xml index 569f7a0d5..8682b84e6 100644 --- a/reference/mongodb/bson/document/torelaxedextendedjson.xml +++ b/reference/mongodb/bson/document/torelaxedextendedjson.xml @@ -34,6 +34,7 @@ Relaxed Extended JSON representation of the BSON document. + &mongodb.note.duplicate-keys.tojson; diff --git a/reference/mongodb/entities.mongodb.ent b/reference/mongodb/entities.mongodb.ent index bc461b02d..21abd79b9 100644 --- a/reference/mongodb/entities.mongodb.ent +++ b/reference/mongodb/entities.mongodb.ent @@ -752,6 +752,23 @@ local: { + + + + If the BSON document contains duplicate keys, all of them are preserved in + the JSON output. + + + + + + + + Duplicate keys in the JSON string are preserved in the order they appear. + + + + @@ -816,10 +833,10 @@ local: { BSON documents can technically contain duplicate keys because documents are - stored as a list of key-value pairs; however, applications should refrain - from generating documents with duplicate keys as server and driver behavior - may be undefined. Since PHP objects and arrays cannot have duplicate keys, - data could also be lost when decoding a BSON document with duplicate keys. + stored as a list of key-value pairs; however, applications should avoid + creating documents with duplicate keys. The server and other drivers may + handle them differently, and PHP objects and arrays cannot have duplicate + keys, so data is lost when decoding a BSON document with duplicate keys. diff --git a/reference/mongodb/functions/bson/fromjson.xml b/reference/mongodb/functions/bson/fromjson.xml index da1514e3f..b42b3c7eb 100644 --- a/reference/mongodb/functions/bson/fromjson.xml +++ b/reference/mongodb/functions/bson/fromjson.xml @@ -49,6 +49,7 @@ The serialized BSON document as a binary string. + &mongodb.note.duplicate-keys.fromjson; diff --git a/reference/mongodb/functions/bson/tocanonicalextendedjson.xml b/reference/mongodb/functions/bson/tocanonicalextendedjson.xml index 63f8cde31..23d4a56e5 100644 --- a/reference/mongodb/functions/bson/tocanonicalextendedjson.xml +++ b/reference/mongodb/functions/bson/tocanonicalextendedjson.xml @@ -53,6 +53,7 @@ The converted JSON value. + &mongodb.note.duplicate-keys.tojson; diff --git a/reference/mongodb/functions/bson/tojson.xml b/reference/mongodb/functions/bson/tojson.xml index d504c61cf..0c403f15b 100644 --- a/reference/mongodb/functions/bson/tojson.xml +++ b/reference/mongodb/functions/bson/tojson.xml @@ -78,6 +78,7 @@ The converted JSON value. + &mongodb.note.duplicate-keys.tojson; diff --git a/reference/mongodb/functions/bson/torelaxedextendedjson.xml b/reference/mongodb/functions/bson/torelaxedextendedjson.xml index e767d51ae..a4fe3135b 100644 --- a/reference/mongodb/functions/bson/torelaxedextendedjson.xml +++ b/reference/mongodb/functions/bson/torelaxedextendedjson.xml @@ -52,6 +52,7 @@ The converted JSON value. + &mongodb.note.duplicate-keys.tojson;