收到文件清单后,我想要做的是: 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有内置的东西。
答案 0 :(得分:1)
您可以使用IsUpsert = true传递UpdateOptions。这将告诉MongoDB插入一个新文档(如果不存在)。 Upsert是portmanteau更新和插入。
await collection.UpdateManyAsync(filter,update, new UpdateOptions() {IsUpsert = true});