mongodb

ci status ci status

swift package index versions swift package index platforms

swift-mongodb 是一个纯 Swift BSON 库和 MongoDB 驱动程序。此包中的所有组成产品都是无 Foundation 的。

快速入门

TODO: 添加更多代码片段

import NIOCore
import NIOPosix
import MongoDB

let executors:MultiThreadedEventLoopGroup = .init(numberOfThreads: 2)

let bootstrap:Mongo.DriverBootstrap = MongoDB / ["mongo-0", "mongo-1"] /?
{
    $0.executors = MultiThreadedEventLoopGroup.singleton
    $0.appname = "example app"
}

let configuration:Mongo.ReplicaSetConfiguration = try await bootstrap.withSessionPool
{
    try await $0.run(
        command: Mongo.ReplicaSetGetConfiguration.init(),
        against: .admin)
}

print(configuration)

//  ...

工具链要求

此包需要 Swift 6.0 或更高版本。

许可证和致谢

此库基于 Apache 2.0 许可证。它最初是 MongoKitten 的重写版本,由 Joannis OrlandosRobbert Brandsma 开发。

外部依赖

我已经验证,当为此包编译 Linux 目标时,此包所依赖的所有产品都是无 Foundation 的。请注意,某些包依赖项确实销售导入 Foundation 的产品,但 swift 在产品级别链接二进制文件,并且此库不依赖于任何此类产品。

我的包

  1. swift-grammar

    理由:此包提供了 TraceableErrors 模块,驱动程序使用该模块来提供丰富的诊断信息。驱动程序不依赖于任何解析器目标。

  2. swift-hash

    理由:此包实现了加密算法,驱动程序使用这些算法来完成与 mongod/mongos 服务器的身份验证。

其他包

  1. apple/swift-atomics

    理由:此包提供了原子类型,这些类型提高了驱动程序各种并发数据结构的性能。

  2. apple/swift-collections

    理由:此包提供了数据结构,这些数据结构提高了驱动程序内部使用的几种算法的运行时复杂度。此外,驱动程序的 swift-nio 依赖项已经依赖于此包的模块之一 (DequeModule)。

  3. apple/swift-nio

    理由:网络。

  4. apple/swift-nio-ssl

    理由:网络。

注意:此库依赖于 swift-nio-ssl 中的 NIOSSL 产品,该产品仅在 Apple 平台上导入 Foundation。NIOSSL 在所有其他平台上都是无 Foundation 的。