- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
查看 mongodb 文档,我读到 FindOneAndReplace 将是一个原子操作。但我不明白的是为什么 ReplaceOne 不会是原子的?如果存在差异,为什么还要使用 ReplaceOne?
最佳答案
文档揭示了一个不同的方法签名:
ReplaceOneResult ReplaceOne(
FilterDefinition<TDocument> filter,
TDocument replacement,
ReplaceOptions options = null,
CancellationToken cancellationToken = null
)
TProjection FindOneAndReplace<TProjection>(
FilterDefinition<TDocument> filter,
TDocument replacement,
FindOneAndReplaceOptions<TDocument, TProjection> options = null,
CancellationToken cancellationToken = null
)
最值得注意的是返回类型和选项参数不同。
虽然 ReplaceOne
返回 ReplaceOneResult , FindOneAndReplace
返回文档(注意选项中的 ReturnDocument 属性)。
ReplaceOptions
与 FindOneAndReplaceOptions
相比相当有限,例如前者不提供 sort
属性来让您控制哪个文档将成为集合中第一个匹配文档。如果您根据 ID 进行过滤,这无关紧要,但如果您想要替换最新文档,则排序选项非常有用。
(旁注:我个人认为此处的文档 https://docs.mongodb.com/manual/reference/method/db.collection.replaceOne/ 和此处的 https://docs.mongodb.com/manual/reference/method/db.collection.findOneAndReplace/ 更有帮助,因为它们更详细地解释了用法并提供了一些示例。但我不知道它与MongoDB C# 驱动程序。)
关于mongodb c# API V2 : Difference between ReplaceOne and FindOneAndReplace,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36895238/
我的应用从远程服务器接收数据,并调用 ReplaceOne 来插入新文档或使用 Upsert = true 的给定键替换现有文档。 ( key 使用 * 进行匿名化)该代码仅在单个线程中运行。 但是,
我在使用 MongoDB 的 C# 驱动程序时遇到了一些奇怪的行为。我正在尝试执行替换多个字段的更新,因此我正在使用 API 中的 ReplaceOneAsync() 方法。我与任何集合的连接都是使用
我正在使用 Mongo Go 适配器:github.com/mongodb/mongo-go-driver/ 我正在尝试不同的模式,但没有一个适合我。 //引用结构 type userbase str
public async Task SomeWork() { Debug.WriteLine("SomeWork for User : " + Context.
查看 mongodb 文档,我读到 FindOneAndReplace 将是一个原子操作。但我不明白的是为什么 ReplaceOne 不会是原子的?如果存在差异,为什么还要使用 ReplaceOne?
MongoDB 批量操作有两种选择: Bulk.find.updateOne() Adds a single document update operation to a bulk operation
我是一名优秀的程序员,十分优秀!