Следующая структура объекта Дано:MongoDB C# Массовое обновление/заменить на подколлекцию
public class RootDocument
{
public Guid Id { get; set; }
public string SomeProperty { get; set; }
public List<ChildDocument> Documents { get; set; }
}
public class ChildDocument
{
public Guid Id { get; set; }
public string Name { get; set; }
public string SomeProperty { get; set; }
}
Я хочу, чтобы обновить все ChildDocuments
заданного Id
на всех RootDocument
в RootDocument
коллекции.
Идея заключается в том, чтобы обновить их все в массивных операциях, как это:
var document = new ChildDocument() { Id = <id of existing ChildDocument>, Name = ..., ...);
var bulkOperations = new WriteModel<RootDocument>[]
{
new UpdateManyModel<RootDocument>(
Builders<RootDocument>.Filter.Eq("Documents.Id", document.id),
Builders<RootDocument>.Update.AddToSet(x => x.Documents, document))
};
await mongoDatabase.GetCollection<RootDocument>()
.BulkWriteAsync(bulkOperations, new BulkWriteOptions { IsOrdered = false });
Но AddToSet
не операция замены существующего ChildDocument
.
Каков наилучший способ использования новейшего драйвера MongoDB C# для реализации этого требования?
Большое спасибо – dna