Swift 中官方 MongoDB BSON 实现!
认为您发现了一个 Bug? 想在 swift-bson
中看到新功能? 请在我们的问题管理工具 JIRA 中创建一个案例
所有驱动程序项目(例如 NODE、PYTHON、CSHARP、JAVA)和核心服务器(例如 SERVER)项目的 JIRA 中的 Bug 报告都是公开的。
该库支持 Swift 5.1+。 构建该库所需的最低 macOS 版本是 10.14。 该库在持续集成环境中针对 macOS 10.14、Ubuntu 16.04 和 Ubuntu 18.04 进行了测试。
支持通过 Swift Package Manager 进行安装。
要安装该库,请将该包添加为项目 Package.swift
文件中的一个依赖项
// swift-tools-version:5.1
import PackageDescription
let package = Package(
name: "MyPackage",
dependencies: [
.package(url: "https://github.com/mongodb/swift-bson", .upToNextMajor(from: "3.1.0"))
],
targets: [
.target(name: "MyTarget", dependencies: ["SwiftBSON"])
]
)
import SwiftBSON
var doc: BSONDocument = ["a": 1, "b": 2, "c": 3]
print(doc) // prints `{"a" : 1, "b" : 2, "c" : 3}`
print(doc["a", default: "Not Found!"]) // prints `.int64(1)`
// Set a new value
doc["d"] = 4
print(doc) // prints `{"a" : 1, "b" : 2, "c" : 3, "d" : 4}`
// Using functional methods like map, filter:
let evensDoc = doc.filter { elem in
guard let value = elem.value.asInt() else {
return false
}
return value % 2 == 0
}
print(evensDoc) // prints `{ "b" : 2, "d" : 4 }`
let doubled = doc.map { elem -> Int in
guard case let value = .int64(value) else {
return 0
}
return Int(value * 2)
}
print(doubled) // prints `[2, 4, 6, 8]`
请注意,BSONDocument
符合 Collection
协议,因此可以使用 Sequence
和 Collection
中的有用方法。 但是,这些方法中的许多方法的运行时保证尚未满足。
请参阅我们的 开发指南,了解 MongoDB 驱动程序的入门信息。 要运行 BSON 库的测试,您可以使用 Makefile 并运行:make test-pretty
(使用 xcpretty
更改输出格式)或仅运行 make test
(对于没有 ruby 的环境)。
此存储库以前包含用于 libbson 的 Swift 绑定,libbson 是 MongoDB C 驱动程序的 BSON 库。 这些绑定仍然可以在 2.1.0 标签下找到。 主要版本 3.0 及更高版本将用于 BSON 库。