BSONDocument
@dynamicMemberLookup
public struct BSONDocument
extension BSONDocument: Codable
extension BSONDocument: Collection
extension BSONDocument: Sequence
extension BSONDocument: Equatable
extension BSONDocument: CustomStringConvertible
extension BSONDocument: ExpressibleByDictionaryLiteral
extension BSONDocument: Hashable
A struct representing the BSON document type.
-
Declaration
Swift
public func encode(to encoder: Encoder) throws
-
This method will work with any
Decoder
, but for non-BSON decoders, we do not support decodingDate
s, because of limitations of decoding toAnyBSONValue
s. SeeAnyBSONValue.init(from:)
for more information.Declaration
Swift
public init(from decoder: Decoder) throws
-
The index type of a document.
Declaration
Swift
public typealias Index = Int
-
Returns the start index of the Document.
Declaration
Swift
public var startIndex: Index { get }
-
Returns the end index of the Document.
Declaration
Swift
public var endIndex: Index { get }
-
Returns the index after the given index for this Document.
-
Allows access to a
KeyValuePair
from theBSONDocument
, given the position of the desiredKeyValuePair
held within. This method does not guarantee constant-time (O(1)) access.Declaration
Swift
public subscript(position: Index) -> KeyValuePair { get }
-
Allows access to a
KeyValuePair
from theBSONDocument
, given a range of indices of the desiredKeyValuePair
‘s held within. This method does not guarantee constant-time (O(1)) access.Declaration
Swift
public subscript(bounds: Range<Index>) -> BSONDocument { get }
-
The element type of a document: a tuple containing an individual key-value pair.
Declaration
Swift
public typealias KeyValuePair = (key: String, value: BSON)
-
The type that is returned from methods such as
dropFirst()
andsplit()
.Declaration
Swift
public typealias SubSequence = BSONDocument
-
Returns a
Bool
indicating whether the document is empty.Declaration
Swift
public var isEmpty: Bool { get }
-
Returns a
BSONDocumentIterator
over the values in thisBSONDocument
.Declaration
Swift
public func makeIterator() -> BSONDocumentIterator
-
Returns a new document containing the keys of this document with the values transformed by the given closure.
Throws
An error if
transform
throws an error.Declaration
Parameters
transform
Return Value
A document containing the keys and transformed values of this document.
-
Returns a document containing all but the given number of initial key-value pairs.
Declaration
Swift
public func dropFirst(_ n: Int) -> BSONDocument
Parameters
k
The number of key-value pairs to drop from the beginning of the document. k must be > 0.
Return Value
A document starting after the specified number of key-value pairs.
-
Returns a document containing all but the given number of final key-value pairs.
Declaration
Swift
public func dropLast(_ n: Int) -> BSONDocument
Parameters
k
The number of key-value pairs to drop from the end of the document. Must be greater than or equal to zero.
Return Value
A document leaving off the specified number of final key-value pairs.
-
Returns a document by skipping the initial, consecutive key-value pairs that satisfy the given predicate.
Throws
An error if
predicate
throws an error.Declaration
Swift
public func drop(while predicate: (KeyValuePair) throws -> Bool) rethrows -> BSONDocument
Parameters
predicate
A closure that takes a key-value pair as its argument and returns a boolean indicating whether the key-value pair should be included in the result.
Return Value
A document starting after the initial, consecutive key-value pairs that satisfy
predicate
. -
Returns a document, up to the specified maximum length, containing the initial key-value pairs of the document.
Declaration
Swift
public func prefix(_ maxLength: Int) -> BSONDocument
Parameters
maxLength
The maximum length for the returned document. Must be greater than or equal to zero.
Return Value
A document starting at the beginning of this document with at most
maxLength
key-value pairs. -
Returns a document containing the initial, consecutive key-value pairs that satisfy the given predicate.
Throws
An error if
predicate
throws an error.Declaration
Swift
public func prefix(while predicate: (KeyValuePair) throws -> Bool) rethrows -> BSONDocument
Parameters
predicate
A closure that takes a key-value pair as its argument and returns a boolean indicating whether the key-value pair should be included in the result.
Return Value
A document containing the initial, consecutive key-value pairs that satisfy
predicate
. -
Returns a document, up to the specified maximum length, containing the final key-value pairs of the document.
Declaration
Swift
public func suffix(_ maxLength: Int) -> BSONDocument
Parameters
maxLength
The maximum length for the returned document. Must be greater than or equal to zero.
Return Value
A document ending at the end of this document with at most
maxLength
key-value pairs. -
Returns the longest possible subsequences of the document, in order, that don’t contain key-value pairs satisfying the given predicate. Key-value pairs that are used to split the document are not returned as part of any subsequence.
Declaration
Swift
public func split( maxSplits: Int = Int.max, omittingEmptySubsequences: Bool = true, whereSeparator isSeparator: (KeyValuePair) throws -> Bool ) rethrows -> [BSONDocument]
Parameters
maxSplits
The maximum number of times to split the document, or one less than the number of subsequences to return. If
maxSplits
+ 1 subsequences are returned, the last one is a suffix of the original document containing the remaining key-value pairs.maxSplits
must be greater than or equal to zero. The default value isInt.max
.omittingEmptySubsequences
If false, an empty document is returned in the result for each pair of consecutive key-value pairs satisfying the
isSeparator
predicate and for each key-value pair at the start or end of the document satisfying theisSeparator
predicate. If true, only nonempty documents are returned. The default value is true.isSeparator
A closure that returns true if its argument should be used to split the document and otherwise returns false.
Return Value
An array of documents, split from this document’s key-value pairs.
-
Returns a new document containing the elements of the document that satisfy the given predicate.
Throws
An error if
isIncluded
throws an error.Declaration
Swift
public func filter(_ isIncluded: (KeyValuePair) throws -> Bool) rethrows -> BSONDocument
Parameters
isIncluded
A closure that takes a key-value pair as its argument and returns a
Bool
indicating whether the pair should be included in the returned document.Return Value
A document containing the key-value pairs that
isIncluded
allows. -
Returns a
[String]
containing the keys in thisBSONDocument
.Declaration
Swift
public var keys: [String] { get }
-
Returns a
[BSON]
containing the values stored in thisBSONDocument
.Declaration
Swift
public var values: [BSON] { get }
-
Returns the number of (key, value) pairs stored at the top level of this
BSONDocument
.Declaration
Swift
public var count: Int { get }
-
Returns the relaxed extended JSON representation of this
BSONDocument
. On error, an empty string will be returned.Declaration
Swift
public func toExtendedJSONString() -> String
-
Returns the canonical extended JSON representation of this
BSONDocument
. On error, an empty string will be returned.Declaration
Swift
public func toCanonicalExtendedJSONString() -> String
-
Returns a copy of the raw BSON data for this
Document
, represented asData
.Declaration
Swift
public func toData() -> Data
-
Initializes a new, empty
BSONDocument
.Declaration
Swift
public init()
-
Constructs a new
BSONDocument
from the provided JSON text.Declaration
Swift
public init(fromJSON: Data) throws
Parameters
fromJSON
a JSON document as
Data
to parse into aBSONDocument
Return Value
the parsed
BSONDocument
-
Convenience initializer for constructing a
BSONDocument
from aString
.Throws
- A
BSONError.InvalidArgumentError
if the string passed in is invalid JSON.
Declaration
Swift
public init(fromJSON json: String) throws
- A
-
Constructs a
BSONDocument
from raw BSONData
.Throws
- A
BSONError.InvalidArgumentError
ifbson
is too short or too long to be valid BSON. - A
BSONError.InvalidArgumentError
if the first four bytes ofbson
do not containbson.count
. - A
BSONError.InvalidArgumentError
if the final byte ofbson
is not a null byte.
See also
http://bsonspec.org/Declaration
Swift
public init(fromBSON bson: Data) throws
- A
-
Returns a
Boolean
indicating whether thisBSONDocument
contains the provided key.Declaration
Swift
public func hasKey(_ key: String) -> Bool
-
Allows setting values and retrieving values using subscript syntax. For example:
let d = Document() d["a"] = 1 print(d["a"]) // prints 1
A nil return value indicates that the subscripted key does not exist in the
BSONDocument
. A true BSON null is returned asBSON.null
.Declaration
Swift
public subscript(key: String) -> BSON? { get set }
-
An implementation identical to subscript(key: String), but offers the ability to choose a default value if the key is missing. For example:
let d: Document = ["hello": "world"] print(d["hello", default: "foo"]) // prints "world" print(d["a", default: "foo"]) // prints "foo"
Declaration
-
Allows setting values and retrieving values using dot-notation syntax. For example:
let d = Document() d.a = 1 print(d.a) // prints 1
A nil return value indicates that the key does not exist in the
BSONDocument
. A true BSON null is returned asBSON.null
.Declaration
Swift
public subscript(dynamicMember member: String) -> BSON? { get set }
-
Declaration
Swift
public static func == (lhs: BSONDocument, rhs: BSONDocument) -> Bool
-
Returns the relaxed extended JSON representation of this
BSONDocument
. On error, an empty string will be returned.Declaration
Swift
public var description: String { get }
-
Initializes a
BSONDocument
using a dictionary literal where the keys areString
s and the values areBSON
s. For example:d: Document = ["a" : 1 ]
Declaration
Swift
public init(dictionaryLiteral keyValuePairs: (String, BSON)...)
Parameters
dictionaryLiteral
a [String: BSON]
Return Value
a new
BSONDocument
-
Declaration
Swift
public func hash(into hasher: inout Hasher)