C# Mongo Driver 批量文件替换

标签 c# mongodb

收到文件 list 后,我要做的是: 1) 如果 Mongo 对文件有唯一的引用,用我收到的替换整个文件 2) 如果 Mongo 没有唯一引用,则在文档中添加新的。

我认为我必须做的是这样的:

//Filter to identify if MongoDB already contains the document
var filter = Builders<MyClass>.Filter.In(x => x.Reference, documents.Result.Select(x => x.Reference));
//This is where I want to say delete and add new document but if it doesn't exist, add new
var update = Builders<MyClass>.Update.Set(x => x, documents.Result.Find(x));
        await collection.UpdateManyAsync(filter,update);

是否有内置的东西来完成这个任务?我想避免比较列表来弄清楚要更新什么和添加什么新的。我希望 Mongo 有一些内置的东西。

最佳答案

您可以通过 IsUpsert = true 传入 UpdateOptions。如果文档不存在,这将告诉 MongoDB 插入一个新文档。更新插入是 portmanteau更新和插入。

await collection.UpdateManyAsync(filter,update, new UpdateOptions() {IsUpsert = true});

关于C# Mongo Driver 批量文件替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43812227/

相关文章:

c# - 如何获取不属于我的应用程序的事件窗口?

mongoDB,无法从配置文件中读取——不同文件夹中的配置/卸载它?

javascript - MongoDB插入多个文档,其中可能有重复的_id

mongodb - 如何使用golang在mongodb中插入多数组

mongodb - Docker mongos:提供有关环境变量的配置服务器

c# - 如何在javascript中获取 session [""]值?

c# - 此 WCF 客户端代码会导致内存泄漏吗?

node.js - Mongo Group后如何获取附加数据

C# WPF x :Type Markup that includes classes that inherit a class

c# - 如何将 'system.collections.generic.list ' 转换为 'system.data.datatable'