MongoCollection
extension MongoCollection
-
打开针对集合的 MongoDB 变更流以监视更改。 生成的流将收到有关此集合的所有事件的通知,根据配置的 MongoDB 规则,授权活动用户查看这些事件。
声明
Swift
public func watch(delegate: ChangeEventDelegate, queue: DispatchQueue = .main) -> ChangeStream
参数
delegate
对生成的变更流中的事件和错误做出反应的委托。
queue
将流媒体事件分派到可选队列,如果未提供队列,则使用主队列
返回值
将管理流事件的 ChangeStream。
-
打开针对collection的MongoDB change stream以监视更改。提供的 BSON 文档将用作来自流的变更事件的匹配表达式筛选器。
请参阅https://mongodb.com/zh-cn/docs/manual/reference/operator/aggregation/match/ 了解有关如何定义匹配筛选器的文档。
定义用于筛选 ChangeEvent 的匹配表达式与为Atlas Triggers定义匹配表达式类似: https ://mongodb.com/zh-cn/docs/realm/triggers/database-triggers/
声明
Swift
public func watch(matchFilter: Document, delegate: ChangeEventDelegate, queue: DispatchQueue = .main) -> ChangeStream
参数
matchFilter
应用于传入变更事件的 $match 筛选器
delegate
对生成的变更流中的事件和错误做出反应的委托。
queue
将流媒体事件分派到可选队列,如果未提供队列,则使用主队列
返回值
将管理流事件的 ChangeStream。
-
打开针对集合的 MongoDB 变更流,以监视对特定文档所做的更改。 要监视的文档必须由其 _id 明确指定。
声明
Swift
public func watch(filterIds: [ObjectId], delegate: ChangeEventDelegate, queue: DispatchQueue = .main) -> ChangeStream
参数
filterIds
要监视的集合中的 _id 列表。
delegate
对生成的变更流中的事件和错误做出反应的委托。
queue
将流媒体事件分派到可选队列,如果未提供队列,则使用主队列
返回值
将管理流事件的 ChangeStream。
-
将提供的值编码为 BSON 并将其插入。 如果该值缺少标识符,则会为其生成一个标识符。
声明
Swift
@preconcurrency public func insertOne(_ document: Document, _ completion: @escaping MongoInsertBlock)
参数
document
document 要插入的
Document
值。completion
尝试执行插入操作的结果。 成功后将返回插入对象的 Id
-
将提供的值编码为 BSON 并插入。 如果有任何值缺少标识符,则会生成这些值。
声明
Swift
@preconcurrency public func insertMany(_ documents: [Document], _ completion: @escaping MongoInsertManyBlock)
参数
documents
要插入的 bson 数组中的
Document
值。completion
插入的结果按顺序返回插入的文档 ID 的数组。
-
查找此collection中与提供的筛选器匹配的文档。
声明
Swift
@preconcurrency public func find(filter: Document, options: FindOptions = FindOptions(), _ completion: @escaping MongoFindBlock)
参数
filter
作为 bson 的
Document
,应与查询匹配。options
FindOptions
执行命令时使用。completion
生成的 bson 文档数组或错误(如果发生)
-
从与提供的筛选器匹配的集合或视图中返回一个文档。 如果多个文档满足查询条件,则此方法根据查询的排序顺序或自然顺序返回第一个文档。
声明
Swift
@preconcurrency public func findOneDocument(filter: Document, options: FindOptions = FindOptions(), _ completion: @escaping MongoFindOneBlock)
参数
filter
作为 bson 的
Document
,应与查询匹配。options
FindOptions
执行命令时使用。completion
如果发生以下情况,则产生的 bson 或错误:
-
针对此collection运行聚合框架管道。
声明
Swift
@preconcurrency public func aggregate(pipeline: [Document], _ completion: @escaping MongoFindBlock)
参数
pipeline
由
Documents
组成的 bson 数组,其中包含要执行的聚合操作的管道。completion
生成的 bson 文档数组或错误(如果发生)
-
计算此集合中与提供的筛选器匹配的文档数量。
声明
Swift
@preconcurrency public func count(filter: Document, limit: Int? = nil, _ completion: @escaping MongoCountBlock)
参数
filter
作为 bson 的
Document
,应与查询匹配。limit
要计数的最大文档数
completion
返回与筛选器匹配的文档计数。
-
从collection中删除单个匹配文档。
声明
Swift
@preconcurrency public func deleteOneDocument(filter: Document, _ completion: @escaping MongoCountBlock)
参数
filter
作为 bson 的
Document
,应与查询匹配。completion
执行删除的结果。 返回已删除对象的计数
-
删除多个文档
声明
Swift
@preconcurrency public func deleteManyDocuments(filter: Document, _ completion: @escaping MongoCountBlock)
参数
filter
表示匹配条件的文档
completion
执行删除的结果。 返回删除操作的计数
-
更新与此collection中提供的筛选器匹配的单个文档。
声明
Swift
@preconcurrency public func updateOneDocument(filter: Document, update: Document, upsert: Bool = false, _ completion: @escaping MongoUpdateBlock)
-
更新与此collection中提供的筛选器匹配的多个文档。
声明
Swift
@preconcurrency public func updateManyDocuments(filter: Document, update: Document, upsert: Bool = false, _ completion: @escaping MongoUpdateBlock)
-
根据查询筛选器更新集合中的单个文档,并以其更新前或更新后的形式返回该文档。 与
updateOneDocument
不同,此操作允许您使用相同命令以原子方式查找、更新和返回文档。 这样可以避免其他更新操作在单独的查找和更新操作之间更改文档的风险。声明
Swift
@preconcurrency public func findOneAndUpdate(filter: Document, update: Document, options: FindOneAndModifyOptions = .init(), _ completion: @escaping MongoFindOneBlock)
-
根据查询筛选器覆盖collection中的单个文档,并以其帖子替换前或替换帖子的形式返回该文档。与
updateOneDocument
不同,此操作允许您使用相同命令以原子方式查找、替换和返回文档。 这样可以避免其他更新操作在单独的查找和更新操作之间更改文档的风险。声明
Swift
@preconcurrency public func findOneAndReplace(filter: Document, replacement: Document, options: FindOneAndModifyOptions = .init(), _ completion: @escaping MongoFindOneBlock)
参数
filter
应与查询匹配的
Document
。replacement
描述替换项的
Document
。options
FindOneAndModifyOptions
执行命令时使用。completion
尝试替换文档的结果。
-
根据查询筛选器从集合中删除单个文档,并返回与删除前的文档具有相同格式的文档。 与
deleteOneDocument
不同,此操作允许您使用相同命令以原子方式查找和删除文档。 这样可以避免其他更新操作在单独的查找和删除操作之间更改文档的风险。声明
Swift
@preconcurrency public func findOneAndDelete(filter: Document, options: FindOneAndModifyOptions = .init(), _ completion: @escaping MongoFindOneBlock)
参数
filter
应与查询匹配的
Document
。options
FindOneAndModifyOptions
执行命令时使用。completion
尝试删除文档的结果。
-
insertOne(_:
异步(Asynchronous)) 将提供的值编码为 BSON 并将其插入。 如果该值缺少标识符,则会为其生成一个标识符。
参数
document
要插入的
Document
值。返回值
插入文档的对象 ID。
-
insertMany(_:
异步(Asynchronous)) 将提供的值编码为 BSON 并插入。 如果有任何值缺少标识符,则会生成这些值。
参数
documents
要插入的 bson 数组中的
Document
值。返回值
插入文档的对象 ID。
-
查找此collection中与提供的筛选器匹配的文档。
-
从与提供的筛选器匹配的集合或视图中返回一个文档。 如果多个文档满足查询条件,则此方法根据查询的排序顺序或自然顺序返回第一个文档。
-
find(filter:
异步(Asynchronous)options: _isolation: ) 查找此collection中与提供的筛选器匹配的文档。
声明
Swift
public func find(filter: Document, options: FindOptions = .init(), _isolation: isolated (any Actor)? = #isolation) async throws -> [Document]
参数
filter
作为 bson 的
Document
,应与查询匹配。options
FindOptions
执行命令时使用。返回值
已过滤的
Document
数组。 -
findOneDocument(filter:
异步(Asynchronous)options: _isolation: ) 从与提供的筛选器匹配的集合或视图中返回一个文档。 如果多个文档满足查询条件,则此方法根据查询的排序顺序或自然顺序返回第一个文档。
声明
Swift
public func findOneDocument(filter: Document, options: FindOptions = .init(), _isolation: isolated (any Actor)? = #isolation) async throws -> Document?
参数
filter
作为 bson 的
Document
,应与查询匹配。options
FindOptions
执行命令时使用。返回值
Document
已过滤。 -
aggregate(pipeline:
异步(Asynchronous)) 针对此collection运行聚合框架管道。
参数
pipeline
由
Documents
组成的 bson 数组,其中包含要执行的聚合操作的管道。返回值
聚合操作的
Document
结果的数组。 -
count(filter:
异步(Asynchronous)limit: ) -
deleteOneDocument(filter:
异步(Asynchronous)) -
deleteManyDocuments(filter:
异步(Asynchronous)) 删除多个文档
声明
Swift
public func deleteManyDocuments(filter: Document) async throws -> Int
参数
filter
表示匹配条件的文档
返回值
Int
已删除文档的计数。 -
updateOneDocument(filter:
异步(Asynchronous)update: upsert: ) 更新与此collection中提供的筛选器匹配的单个文档。
声明
Swift
public func updateOneDocument(filter: Document, update: Document, upsert: Bool? = nil) async throws -> UpdateResult
参数
filter
表示匹配条件的 bson
Document
。update
一个 bson
Document
,表示要应用于匹配文档的更新。upsert
如果为 true,则在没有文档与查询匹配的情况下创建新文档。
返回值
UpdateResult
updateOne
操作的结果。 -
updateManyDocuments(filter:
异步(Asynchronous)update: upsert: ) 更新与此collection中提供的筛选器匹配的多个文档。
声明
Swift
public func updateManyDocuments(filter: Document, update: Document, upsert: Bool? = nil) async throws -> UpdateResult
参数
filter
表示匹配条件的 bson
Document
。update
一个 bson
Document
,表示要应用于匹配文档的更新。upsert
如果为 true,则在没有文档与查询匹配的情况下创建新文档。
返回值
UpdateResult
updateMany
操作的结果。 -
根据查询筛选器更新集合中的单个文档,并以其更新前或更新后的形式返回该文档。 与
updateOneDocument
不同,此操作允许您使用相同命令以原子方式查找、更新和返回文档。 这样可以避免其他更新操作在单独的查找和更新操作之间更改文档的风险。 -
根据查询筛选器覆盖collection中的单个文档,并以其帖子替换前或替换帖子的形式返回该文档。与
updateOneDocument
不同,此操作允许您使用相同命令以原子方式查找、替换和返回文档。 这样可以避免其他更新操作在单独的查找和更新操作之间更改文档的风险。 -
根据查询筛选器从集合中删除单个文档,并返回与删除前的文档具有相同格式的文档。 与
deleteOneDocument
不同,此操作允许您使用相同命令以原子方式查找和删除文档。 这样可以避免其他更新操作在单独的查找和删除操作之间更改文档的风险。 -
findOneAndUpdate(filter:
异步(Asynchronous)update: options: _isolation: ) 根据查询筛选器更新集合中的单个文档,并以其更新前或更新后的形式返回该文档。 与
updateOneDocument
不同,此操作允许您使用相同命令以原子方式查找、更新和返回文档。 这样可以避免其他更新操作在单独的查找和更新操作之间更改文档的风险。声明
Swift
public func findOneAndUpdate(filter: Document, update: Document, options: FindOneAndModifyOptions = .init(), _isolation: isolated (any Actor)? = #isolation) async throws -> Document?
参数
filter
表示匹配条件的 bson
Document
。update
一个 bson
Document
,表示要应用于匹配文档的更新。options
RemoteFindOneAndModifyOptions
执行命令时使用。返回值
Document
尝试更新文档的结果,如果未找到文档,则为nil
。 -
findOneAndReplace(filter:
异步(Asynchronous)replacement: options: _isolation: ) 根据查询筛选器覆盖collection中的单个文档,并以其帖子替换前或替换帖子的形式返回该文档。与
updateOneDocument
不同,此操作允许您使用相同命令以原子方式查找、替换和返回文档。 这样可以避免其他更新操作在单独的查找和更新操作之间更改文档的风险。声明
Swift
public func findOneAndReplace(filter: Document, replacement: Document, options: FindOneAndModifyOptions = .init(), _isolation: isolated (any Actor)? = #isolation) async throws -> Document?
参数
filter
应与查询匹配的
Document
。replacement
描述替换项的
Document
。options
FindOneAndModifyOptions
执行命令时使用。返回值
Document
尝试重新查找文档的结果,如果未找到文档,则为nil
。 -
findOneAndDelete(filter:
异步(Asynchronous)options: _isolation: ) 根据查询筛选器从集合中删除单个文档,并返回与删除前的文档具有相同格式的文档。 与
deleteOneDocument
不同,此操作允许您使用相同命令以原子方式查找和删除文档。 这样可以避免其他更新操作在单独的查找和删除操作之间更改文档的风险。声明
Swift
public func findOneAndDelete(filter: Document, options: FindOneAndModifyOptions = .init(), _isolation: isolated (any Actor)? = #isolation) async throws -> Document?
参数
filter
应与查询匹配的
Document
。options
FindOneAndModifyOptions
执行命令时使用。返回值
Document
尝试删除文档的结果,如果未找到文档,则为nil
。 -
创建发布者,每次 MongoDB collection更改时,该发布者都会发出 AnyBSON 事件。
声明
Swift
public func watch() -> Publishers.WatchPublisher
返回值
每次collection更改时发出 AnyBSON 事件的发布者。
-
创建发布者,每次 MongoDB collection更改时,该发布者都会发出 AnyBSON 事件。
声明
Swift
public func watch(filterIds: [ObjectId]) -> Publishers.WatchPublisher
参数
filterIds
要监视的集合中的 _id 列表。
返回值
每次collection更改时发出 AnyBSON 事件的发布者。
-
创建发布者,每次 MongoDB collection更改时,该发布者都会发出 AnyBSON 事件。
声明
Swift
public func watch(matchFilter: Document) -> Publishers.WatchPublisher
参数
matchFilter
应用于传入变更事件的 $match 筛选器。
返回值
每次collection更改时发出 AnyBSON 事件的发布者。
-
AnyBSON 值的异步序列,包含有关 MongoDB 集合的每次更改的信息
声明
Swift
public var changeEvents: AsyncThrowingPublisher<Publishers.WatchPublisher> { get }
-
AnyBSON 值的异步序列,包含有关 MongoDB 集合的每次更改的信息
声明
Swift
public func changeEvents(onOpen: @Sendable @escaping () -> Void) -> AsyncThrowingPublisher<Publishers.WatchPublisher>
参数
onOpen
监视流在服务器上初始化时调用的回调。 在此回调被调用之前触发的服务器端变更可能不会产生变更事件。
-
AnyBSON 值的异步序列,包含对 MongoDB collection 中 ID 包含在
filterIds
中的objects的每次更改的信息。声明
Swift
public func changeEvents(filterIds: [ObjectId], onOpen: (@Sendable () -> Void)? = nil) -> AsyncThrowingPublisher<Publishers.WatchPublisher>
参数
filterIds
应生成变更事件的文档 ID
onOpen
可选回调,当监视流在服务器上初始化时调用。 在此回调被调用之前触发的服务器端变更可能不会产生变更事件。
-
AnyBSON 值的异步序列,包含与给定 $match 筛选器匹配的 MongoDB collection中对象的每次更改的信息。
声明
Swift
public func changeEvents(matchFilter: Document, onOpen: (@Sendable () -> Void)? = nil) -> AsyncThrowingPublisher<Publishers.WatchPublisher>
参数
matchFilter
$match 过滤器,用于过滤产生变更事件的文档。
onOpen
可选回调,当监视流在服务器上初始化时调用。 在此回调被调用之前触发的服务器端变更可能不会产生变更事件。
-
将提供的值编码为 BSON 并将其插入。 如果该值缺少标识符,则会为其生成一个标识符。
参数
document
要插入的
Document
值。返回值
最终返回插入文档的对象 ID 或
Error
的发布者。 -
将提供的值编码为 BSON 并插入。 如果有任何值缺少标识符,则会生成这些值。
参数
documents
要插入的 bson 数组中的
Document
值。返回值
最终返回插入文档的对象 ID 或
Error
的发布者。 -
查找此collection中与提供的筛选器匹配的文档。
声明
Swift
func find(filter: Document, options: FindOptions) -> Future<[Document], Error>
参数
filter
作为 bson 的
Document
,应与查询匹配。options
FindOptions
执行命令时使用。返回值
最终返回文档的
[ObjectId]
或Error
的发布者。 -
查找此collection中与提供的筛选器匹配的文档。
参数
filter
作为 bson 的
Document
,应与查询匹配。返回值
最终返回文档的
[ObjectId]
或Error
的发布者。 -
从与提供的筛选器匹配的集合或视图中返回一个文档。 如果多个文档满足查询条件,则此方法根据查询的排序顺序或自然顺序返回第一个文档。
声明
Swift
func findOneDocument(filter: Document, options: FindOptions) -> Future<Document?, Error>
参数
filter
作为 bson 的
Document
,应与查询匹配。options
FindOptions
执行命令时使用。返回值
最终返回
Document
或Error
的发布者。 -
针对此collection运行聚合框架管道。
参数
pipeline
由
Documents
组成的 bson 数组,其中包含要执行的聚合操作的管道。返回值
最终返回
Document
或Error
的发布者。 -
删除多个文档
声明
Swift
func deleteManyDocuments(filter: Document) -> Future<Int, Error>
参数
filter
表示匹配条件的文档
返回值
最终返回
Int
已删除文档的计数或Error
的发布者。 -
更新与此collection中提供的筛选器匹配的单个文档。
声明
Swift
func updateOneDocument(filter: Document, update: Document, upsert: Bool) -> Future<UpdateResult, Error>
参数
filter
表示匹配条件的 bson
Document
。update
一个 bson
Document
,表示要应用于匹配文档的更新。upsert
如果为 true,则在没有文档与查询匹配的情况下创建新文档。
返回值
最终返回
UpdateResult
或Error
的发布者。 -
更新与此collection中提供的筛选器匹配的单个文档。
声明
Swift
func updateOneDocument(filter: Document, update: Document) -> Future<UpdateResult, Error>
返回值
最终返回
UpdateResult
或Error
的发布者。 -
更新与此collection中提供的筛选器匹配的多个文档。
声明
Swift
func updateManyDocuments(filter: Document, update: Document, upsert: Bool) -> Future<UpdateResult, Error>
参数
filter
表示匹配条件的 bson
Document
。update
一个 bson
Document
,表示要应用于匹配文档的更新。upsert
如果为 true,则在没有文档与查询匹配的情况下创建新文档。
返回值
最终返回
UpdateResult
或Error
的发布者。 -
更新与此collection中提供的筛选器匹配的多个文档。
声明
Swift
func updateManyDocuments(filter: Document, update: Document) -> Future<UpdateResult, Error>
返回值
最终返回
UpdateResult
或Error
的发布者。 -
根据查询筛选器更新集合中的单个文档,并以其更新前或更新后的形式返回该文档。 与
updateOneDocument
不同,此操作允许您使用相同命令以原子方式查找、更新和返回文档。 这样可以避免其他更新操作在单独的查找和更新操作之间更改文档的风险。声明
Swift
func findOneAndUpdate(filter: Document, update: Document, options: FindOneAndModifyOptions) -> Future<Document?, Error>
参数
filter
表示匹配条件的 bson
Document
。update
一个 bson
Document
,表示要应用于匹配文档的更新。options
RemoteFindOneAndModifyOptions
执行命令时使用。返回值
如果未找到文档,则最终返回
Document
或nil
的发布者,或者Error
。 -
根据查询筛选器更新集合中的单个文档,并以其更新前或更新后的形式返回该文档。 与
updateOneDocument
不同,此操作允许您使用相同命令以原子方式查找、更新和返回文档。 这样可以避免其他更新操作在单独的查找和更新操作之间更改文档的风险。返回值
如果未找到文档,则最终返回
Document
或nil
的发布者,或者Error
。 -
根据查询筛选器覆盖collection中的单个文档,并以其帖子替换前或替换帖子的形式返回该文档。与
updateOneDocument
不同,此操作允许您使用相同命令以原子方式查找、替换和返回文档。 这样可以避免其他更新操作在单独的查找和更新操作之间更改文档的风险。声明
Swift
func findOneAndReplace(filter: Document, replacement: Document, options: FindOneAndModifyOptions) -> Future<Document?, Error>
参数
filter
应与查询匹配的
Document
。replacement
描述替换项的
Document
。options
FindOneAndModifyOptions
执行命令时使用。返回值
如果未找到文档,则最终返回
Document
或nil
的发布者,或者Error
。 -
根据查询筛选器覆盖collection中的单个文档,并以其帖子替换前或替换帖子的形式返回该文档。与
updateOneDocument
不同,此操作允许您使用相同命令以原子方式查找、替换和返回文档。 这样可以避免其他更新操作在单独的查找和更新操作之间更改文档的风险。声明
返回值
如果未找到文档,则最终返回
Document
或nil
的发布者,或者Error
。 -
根据查询筛选器从集合中删除单个文档,并返回与删除前的文档具有相同格式的文档。 与
deleteOneDocument
不同,此操作允许您使用相同命令以原子方式查找和删除文档。 这样可以避免其他更新操作在单独的查找和删除操作之间更改文档的风险。声明
Swift
func findOneAndDelete(filter: Document, options: FindOneAndModifyOptions) -> Future<Document?, Error>
参数
filter
应与查询匹配的
Document
。options
FindOneAndModifyOptions
执行命令时使用。返回值
如果未找到文档,则最终返回
Document
或nil
的发布者,或者Error
。