diff --git a/Sources/BSON/Document+Subscripts.swift b/Sources/BSON/Document+Subscripts.swift index d3c632a..52021fb 100644 --- a/Sources/BSON/Document+Subscripts.swift +++ b/Sources/BSON/Document+Subscripts.swift @@ -103,26 +103,29 @@ extension Document { let len = getLengthOfElement(withDataPosition: meta.dataPosition, type: meta.type) let dataEndPosition = meta.dataPosition+len - storage.removeSubrange(meta.dataPosition.. meta.elementTypePosition { + searchTree[key] = startPosition + relativeLength + } } else { storage.removeSubrange(meta.elementTypePosition..<(meta.elementTypePosition + part.bytes.count + 2 + len)) // key + null terminator + type relativeLength = -((part.bytes.count + 2) + len) searchTree[part] = nil - } - - for (key, startPosition) in searchTree where startPosition > meta.elementTypePosition { - searchTree[key] = startPosition + relativeLength + + for (key, startPosition) in searchTree where startPosition > meta.dataPosition + relativeLength { + searchTree[key] = startPosition + relativeLength + } } updateDocumentHeader()