我试图编写一些C#库代码来替换MongoDB中的文档,如下所示:
public async Task<IReadOnlyList<ThingUpdateResult>> UpdateAsync(
[NotNull] IReadOnlyList<Thing> things,
CancellationToken cancellationToken = default(CancellationToken))
{
if (things == null) throw new ArgumentNullException(nameof(things));
var writeModels = things
.Select(i => new ReplaceOneModel<Thing>(
new ObjectFilterDefinition<Thing>(new {i.Id}), i));
var result = await _collection
.BulkWriteAsync(writeModels, new BulkWriteOptions {IsOrdered = false}, cancellationToken)
.ConfigureAwait(false);
// Problem:
var results = result.SuccessfulReplacements // There's no such thing, only ProcessedRequests and Upserts
.Select(i => new ThingUpdateResult(i.Id.AsString, updated: true))
.ToArray();
return results;
}
我试图返回一个结果集合,其中每个结果都包含文档的ID和一个表示是否已成功更新的布尔值。例如,如果things
包含MongoDB中不存在的文档,我会给它一个false
的结果。
但是...... result
并不包含任何相关信息;它只给了我一些比赛。有没有办法找出哪些文件匹配哪些没有?
编辑:刚刚意识到我需要为删除操作做同样的事情,所以我想那里会有类似的情况......
答案 0 :(得分:0)
我不认为这是可能的,因为WriteResult只返回匹配/更新/ upserted的#而不是他们的ID。
我相信你需要写一个小函数来: