Document
Document.swift:4struct Document
struct Document
import BSON
protocol BidirectionalCollection<Element> : Collection where Self.Indices : BidirectionalCollection, Self.SubSequence : BidirectionalCollection
A collection that supports backward as well as forward traversal.
protocol Collection<Element> : Sequence
A sequence whose elements can be traversed multiple times, nondestructively, and accessed by an indexed subscript.
protocol CustomDebugStringConvertible
A type with a customized textual representation suitable for debugging purposes.
protocol Decodable
A type that can decode itself from an external representation.
protocol Encodable
A type that can encode itself to an external representation.
protocol Equatable
A type that can be compared for value equality.
protocol ExpressibleByArrayLiteral
A type that can be initialized using an array literal.
protocol ExpressibleByDictionaryLiteral
A type that can be initialized using a dictionary literal.
protocol Hashable : Equatable
A type that can be hashed into a Hasher
to produce an integer hash value.
protocol MutableCollection<Element> : Collection where Self.SubSequence : MutableCollection
A collection that supports subscript assignment.
protocol Primitive : PrimitiveEncodable, Decodable, Encodable, Sendable
protocol PrimitiveEncodable
protocol RandomAccessCollection<Element> : BidirectionalCollection where Self.Indices : RandomAccessCollection, Self.SubSequence : RandomAccessCollection
A collection that supports efficient random-access index traversal.
protocol Sendable
A type whose values can safely be passed across concurrency domains by copying.
protocol Sequence<Element>
A type that provides sequential, iterated access to its elements.
init(array: [PrimitiveEncodable]) throws
Converts an array of Primitives to a BSON ArrayDocument
init(arrayLiteral elements: Primitive...)
init(buffer: ByteBuffer, isArray: Bool = false)
Creates a new Document
by parsing an existing ByteBuffer
init(bytes: [UInt8], isArray: Bool = false)
Creates a new Document
from the given bytes
init(data: Data, isArray: Bool = false)
Creates a new Document
by parsing the existing Data
buffer
init(dictionaryLiteral elements: (String, Primitive)...)
Creates a new Document from a Dictionary literal
init<S>(elements: S, isArray: Bool = false) where S : Sequence, S.Element == (String, any Primitive)
Creates a new Document with the given elements
init(from decoder: Decoder) throws
init(isArray: Bool = false)
Creates a new empty BSONDocument
var count: Int { get }
var debugDescription: String { get }
var endIndex: DocumentIndex { get }
var isArray: Bool
Dictates whether this Document
is an Array
or Dictionary
-like type
var keys: [String] { get }
Gets all top level keys in this Document
var pairs: DocumentPairIterator { get }
A more detailed view into the pairs contained in this
var startIndex: DocumentIndex { get }
var values: [Primitive] { get }
Gets all top level values in this Document
subscript(bounds: Range<DocumentIndex>) -> DocumentSlice { get set }
subscript(key: String) -> Primitive? { get set }
Extracts any Primitive
fom the value at key key
subscript(index: Int) -> Primitive { get set }
subscript(position: DocumentIndex) -> (String, Primitive) { get set }
static func == (lhs: Document, rhs: Document) -> Bool
mutating func append(_ value: Primitive)
Appends a Value
to this Document
where this Document
acts like an Array
mutating func append<PE>(_ value: PE) throws where PE : PrimitiveEncodable
Appends a Value
to this Document
where this Document
acts like an Array
mutating func append(contentsOf document: Document)
mutating func appendValue(_ value: Primitive, forKey key: String)
func containsKey(_ key: String) -> Bool
func encode(to encoder: Encoder) throws
func hash(into hasher: inout Hasher)
func index(after i: DocumentIndex) -> DocumentIndex
func index(before i: DocumentIndex) -> DocumentIndex
mutating func insert(_ value: Primitive, at index: Int)
mutating func insert<PE>(_ value: PE, at index: Int) throws where PE : PrimitiveEncodable
mutating func insert(_ value: Primitive, forKey key: String, at index: Int)
mutating func insert(contentsOf document: Document, at index: Int)
func makeByteBuffer() -> ByteBuffer
Returns a ByteBuffer
representation of this Document
. This is a copy of the underlying ByteBuffer
.
func makeData() -> Data
Returns a Data
representation of this Document
. This is a copy of the underlying ByteBuffer
’s data.
func makeIterator() -> DocumentIterator
Creates an iterator that iterates over each pair in the Document
mutating func remove(at index: Int)
mutating func removeValue(forKey key: String) -> Primitive?
func validate() -> ValidationResult
Validates this document’s technical correctness
typealias Index = DocumentIndex
typealias Iterator = DocumentIterator
typealias SubSequence = DocumentSlice
var first: Self.Element? { get }
The first element of the collection.
var indices: DefaultIndices<Self> { get }
The indices that are valid for subscripting the collection, in ascending order.
var isEmpty: Bool { get }
A Boolean value indicating whether the collection is empty.
var last: Self.Element? { get }
The last element of the collection.
var lazy: LazySequence<Self> { get }
A sequence containing the same elements as this sequence, but on which some operations, such as map
and filter
, are implemented lazily.
var underestimatedCount: Int { get }
A value less than or equal to the number of elements in the collection.
subscript<R>(r: R) -> Self.SubSequence where R : RangeExpression, Self.Index == R.Bound { get set }
subscript(x: (UnboundedRange_) -> ()) -> Self.SubSequence { get set }
subscript<R>(r: R) -> Self.SubSequence where R : RangeExpression, Self.Index == R.Bound { get }
Accesses the contiguous subrange of the collection’s elements specified by a range expression.
subscript(x: (UnboundedRange_) -> ()) -> Self.SubSequence { get }
subscript(_offset offset: Int) -> Element { get }
static func != (lhs: Self, rhs: Self) -> Bool
Returns a Boolean value indicating whether two values are not equal.
func _index(at offset: Int) -> Index
func _offset(of index: Index) -> Int
func allSatisfy(_ predicate: (Self.Element) throws -> Bool) rethrows -> Bool
Returns a Boolean value indicating whether every element of a sequence satisfies a given predicate.
func compactMap<ElementOfResult>(_ transform: (Self.Element) throws -> ElementOfResult?) rethrows -> [ElementOfResult]
Returns an array containing the non-nil
results of calling the given transformation with each element of this sequence.
func contains(where predicate: (Self.Element) throws -> Bool) rethrows -> Bool
Returns a Boolean value indicating whether the sequence contains an element that satisfies the given predicate.
func difference<C>(from other: C, by areEquivalent: (C.Element, Self.Element) -> Bool) -> CollectionDifference<Self.Element> where C : BidirectionalCollection, Self.Element == C.Element
Returns the difference needed to produce this collection’s ordered elements from the given collection, using the given predicate as an equivalence test.
func distance(from start: Self.Index, to end: Self.Index) -> Int
func drop(while predicate: (Self.Element) throws -> Bool) rethrows -> Self.SubSequence
Returns a subsequence by skipping elements while predicate
returns true
and returning the remaining elements.
func dropFirst(_ k: Int = 1) -> Self.SubSequence
Returns a subsequence containing all but the given number of initial elements.
func dropLast(_ k: Int) -> Self.SubSequence
Returns a subsequence containing all but the specified number of final elements.
func elementsEqual<OtherSequence>(_ other: OtherSequence, by areEquivalent: (Self.Element, OtherSequence.Element) throws -> Bool) rethrows -> Bool where OtherSequence : Sequence
Returns a Boolean value indicating whether this sequence and another sequence contain equivalent elements in the same order, using the given predicate as the equivalence test.
func encodePrimitive() throws -> Primitive
func enumerated() -> EnumeratedSequence<Self>
Returns a sequence of pairs (n, x), where n represents a consecutive integer starting at zero and x represents an element of the sequence.
func equals(_ primitive: Primitive) -> Bool
func filter(_ isIncluded: (Self.Element) throws -> Bool) rethrows -> [Self.Element]
Returns an array containing, in order, the elements of the sequence that satisfy the given predicate.
func first(where predicate: (Self.Element) throws -> Bool) rethrows -> Self.Element?
Returns the first element of the sequence that satisfies the given predicate.
func firstIndex(where predicate: (Self.Element) throws -> Bool) rethrows -> Self.Index?
Returns the first index in which an element of the collection satisfies the given predicate.
func forEach(_ body: (Self.Element) throws -> Void) rethrows
Calls the given closure on each element in the sequence in the same order as a for
-in
loop.
func formIndex(_ i: inout Self.Index, offsetBy distance: Int)
Offsets the given index by the specified distance.
func formIndex(_ i: inout Self.Index, offsetBy distance: Int, limitedBy limit: Self.Index) -> Bool
Offsets the given index by the specified distance, or so that it equals the given limiting index.
func formIndex(after i: inout Self.Index)
Replaces the given index with its successor.
func formIndex(before i: inout Self.Index)
func index(_ i: Self.Index, offsetBy distance: Int) -> Self.Index
func index(_ i: Self.Index, offsetBy distance: Int, limitedBy limit: Self.Index) -> Self.Index?
Returns an index that is the specified distance from the given index, unless that distance is beyond a given limiting index.
func last(where predicate: (Self.Element) throws -> Bool) rethrows -> Self.Element?
Returns the last element of the sequence that satisfies the given predicate.
func lastIndex(where predicate: (Self.Element) throws -> Bool) rethrows -> Self.Index?
Returns the index of the last element in the collection that matches the given predicate.
func lexicographicallyPrecedes<OtherSequence>(_ other: OtherSequence, by areInIncreasingOrder: (Self.Element, Self.Element) throws -> Bool) rethrows -> Bool where OtherSequence : Sequence, Self.Element == OtherSequence.Element
Returns a Boolean value indicating whether the sequence precedes another sequence in a lexicographical (dictionary) ordering, using the given predicate to compare elements.
func map<T>(_ transform: (Self.Element) throws -> T) rethrows -> [T]
Returns an array containing the results of mapping the given closure over the sequence’s elements.
func map<T>(_ transform: (Self.Element) throws -> T) rethrows -> [T]
Returns an array containing the results of mapping the given closure over the sequence’s elements.
@warn_unqualified_access func max(by areInIncreasingOrder: (Self.Element, Self.Element) throws -> Bool) rethrows -> Self.Element?
Returns the maximum element in the sequence, using the given predicate as the comparison between elements.
@warn_unqualified_access func min(by areInIncreasingOrder: (Self.Element, Self.Element) throws -> Bool) rethrows -> Self.Element?
Returns the minimum element in the sequence, using the given predicate as the comparison between elements.
mutating func partition(by belongsInSecondPartition: (Self.Element) throws -> Bool) rethrows -> Self.Index
Reorders the elements of the collection such that all the elements that match the given predicate are after all the elements that don’t match.
mutating func partition(by belongsInSecondPartition: (Self.Element) throws -> Bool) rethrows -> Self.Index
Reorders the elements of the collection such that all the elements that match the given predicate are after all the elements that don’t match.
func prefix(_ maxLength: Int) -> Self.SubSequence
Returns a subsequence, up to the specified maximum length, containing the initial elements of the collection.
func prefix(through position: Self.Index) -> Self.SubSequence
Returns a subsequence from the start of the collection through the specified position.
func prefix(upTo end: Self.Index) -> Self.SubSequence
Returns a subsequence from the start of the collection up to, but not including, the specified position.
func prefix(while predicate: (Self.Element) throws -> Bool) rethrows -> Self.SubSequence
Returns a subsequence containing the initial elements until predicate
returns false
and skipping the remaining elements.
func randomElement() -> Self.Element?
Returns a random element of the collection.
func randomElement<T>(using generator: inout T) -> Self.Element? where T : RandomNumberGenerator
Returns a random element of the collection, using the given generator as a source for randomness.
func reduce<Result>(_ initialResult: Result, _ nextPartialResult: (Result, Self.Element) throws -> Result) rethrows -> Result
Returns the result of combining the elements of the sequence using the given closure.
func reduce<Result>(into initialResult: Result, _ updateAccumulatingResult: (inout Result, Self.Element) throws -> ()) rethrows -> Result
Returns the result of combining the elements of the sequence using the given closure.
mutating func reverse()
Reverses the elements of the collection in place.
func reversed() -> ReversedCollection<Self>
Returns a view presenting the elements of the collection in reverse order.
mutating func shuffle()
Shuffles the collection in place.
mutating func shuffle<T>(using generator: inout T) where T : RandomNumberGenerator
Shuffles the collection in place, using the given generator as a source for randomness.
func shuffled() -> [Self.Element]
Returns the elements of the sequence, shuffled.
func shuffled<T>(using generator: inout T) -> [Self.Element] where T : RandomNumberGenerator
Returns the elements of the sequence, shuffled using the given generator as a source for randomness.
mutating func sort(by areInIncreasingOrder: (Self.Element, Self.Element) throws -> Bool) rethrows
Sorts the collection in place, using the given predicate as the comparison between elements.
func sorted(by areInIncreasingOrder: (Self.Element, Self.Element) throws -> Bool) rethrows -> [Self.Element]
Returns the elements of the sequence, sorted using the given predicate as the comparison between elements.
func split(maxSplits: Int = Int.max, omittingEmptySubsequences: Bool = true, whereSeparator isSeparator: (Self.Element) throws -> Bool) rethrows -> [Self.SubSequence]
Returns the longest possible subsequences of the collection, in order, that don’t contain elements satisfying the given predicate.
func starts<PossiblePrefix>(with possiblePrefix: PossiblePrefix, by areEquivalent: (Self.Element, PossiblePrefix.Element) throws -> Bool) rethrows -> Bool where PossiblePrefix : Sequence
Returns a Boolean value indicating whether the initial elements of the sequence are equivalent to the elements in another sequence, using the given predicate as the equivalence test.
func suffix(_ maxLength: Int) -> Self.SubSequence
Returns a subsequence, up to the given maximum length, containing the final elements of the collection.
func suffix(from start: Self.Index) -> Self.SubSequence
Returns a subsequence from the specified position to the end of the collection.
mutating func swapAt(_ i: Self.Index, _ j: Self.Index)
Exchanges the values at the specified indices of the collection.
func trimmingPrefix(while predicate: (Self.Element) throws -> Bool) rethrows -> Self.SubSequence
mutating func withContiguousMutableStorageIfAvailable<R>(_ body: (inout UnsafeMutableBufferPointer<Self.Element>) throws -> R) rethrows -> R?
func withContiguousStorageIfAvailable<R>(_ body: (UnsafeBufferPointer<Self.Element>) throws -> R) rethrows -> R?
func flatMap(_ transform: (Self.Element) throws -> String?) rethrows -> [String]