swift-mongodb
is a pure-Swift BSON library and MongoDB driver. All of the constituent products in this package are Foundation-free.
getting started
TODO: add more snippets
import NIOCore
import NIOPosix
import MongoDB
let executors:MultiThreadedEventLoopGroup = .init(numberOfThreads: 2)
let bootstrap:Mongo.DriverBootstrap = MongoDB / ["mongo-0", "mongo-1"] /?
{
$0.executors = .shared(executors)
$0.appname = "example app"
}
let configuration:Mongo.ReplicaSetConfiguration = try await bootstrap.withSessionPool
{
try await $0.run(
command: Mongo.ReplicaSetGetConfiguration.init(),
against: .admin)
}
print(configuration)
// ...
external dependencies
I have verified that all products depended-upon by this package are Foundation-free when compiled for a linux target. Note that some package dependencies do vend products that import Foundation, but swift links binaries at the product level, and this library does not depend on any such products.
My packages:
swift-grammar
Rationale: this package provides the TraceableErrors
module which the driver uses to provide rich diagnostics. The driver does not depend on any parser targets.
swift-hash
Rationale: this package implements cryptographic algorithms the driver uses to complete authentication with mongod
/mongos
servers.
Other packages:
apple/swift-atomics
Rationale: this package provides atomic types that improve the performance of the driver’s various concurrent data structures.
apple/swift-collections
Rationale: this package provides data structures that improve the runtime complexity of several algorithms the driver uses internally. Moreover, the driver’s swift-nio
dependency already depends on one of this package’s modules (DequeModule
) anyway.
apple/swift-nio
Rationale: networking.
apple/swift-nio-ssl
Rationale: networking.
Note: This library depends on the NIOSSL
product from swift-nio-ssl
, which imports Foundation on Apple platforms only. NIOSSL
is Foundation-free on all other platforms.
This package requires swift 5.8 or greater.
acknowledgements
This library originally started out as a re-write of Orlandos’s MongoKitten; accordingly the MongoDriver
module retains MongoKitten’s original MIT-license.
The official MongoDB C driver also served as prior art for this module.
license
The MongoDriver
module is MIT-licensed.
The other modules are available under the MPL 2.0 license. This license was chosen as an organizational default, and is not ideological. Please reach out if you have a use-case that requires a more-permissive license!
mongodb
0.2.3
swift-mongodb
is a pure-Swift BSON library and MongoDB driver. All of the constituent products in this package are Foundation-free.getting started
TODO: add more snippets
external dependencies
I have verified that all products depended-upon by this package are Foundation-free when compiled for a linux target. Note that some package dependencies do vend products that import Foundation, but swift links binaries at the product level, and this library does not depend on any such products.
My packages:
swift-grammar
Rationale: this package provides the
TraceableErrors
module which the driver uses to provide rich diagnostics. The driver does not depend on any parser targets.swift-hash
Rationale: this package implements cryptographic algorithms the driver uses to complete authentication with
mongod
/mongos
servers.Other packages:
apple/swift-atomics
Rationale: this package provides atomic types that improve the performance of the driver’s various concurrent data structures.
apple/swift-collections
Rationale: this package provides data structures that improve the runtime complexity of several algorithms the driver uses internally. Moreover, the driver’s
swift-nio
dependency already depends on one of this package’s modules (DequeModule
) anyway.apple/swift-nio
Rationale: networking.
apple/swift-nio-ssl
Rationale: networking.
toolchain requirement
This package requires swift 5.8 or greater.
acknowledgements
This library originally started out as a re-write of Orlandos’s MongoKitten; accordingly the
MongoDriver
module retains MongoKitten’s original MIT-license.The official MongoDB C driver also served as prior art for this module.
license
The
MongoDriver
module is MIT-licensed.The other modules are available under the MPL 2.0 license. This license was chosen as an organizational default, and is not ideological. Please reach out if you have a use-case that requires a more-permissive license!