MongoDb C# 驱动程序 2.0 将项目添加到嵌套数组

MongoDb C# Driver 2.0 add item to nested array

我有一个 Profiles 文档集合,其中包含以下文档数组:

public class Profile2MailList
{


    [BsonElement(elementName: "listId")]
    [BsonRequired]
    public int MailListId;

    [BsonElement(elementName: "status")]
    [BsonRequired]
    public int Status;

    [BsonElement(elementName: "subscriptionDate")]
    [BsonRequired]
    public DateTime SubscriptionDate;
} 

每个 Profile。 我需要在 Profile2MailList 数组中添加一个新的 Profile2MailList 文档,每个 Profile 基于 Profile2MailList 已经包含在某个 Profile 中。所以我需要

方法 "UpdateManyAsync" 仅在您想执行一种类型的更新时才有效,而您的情况似乎并非如此。您要做的是改为执行批量更新。以您的示例为基础,您可能希望执行以下操作:

        var bulk = new List<WriteModel<Profile>>();
        foreach (Profile item in profiles)
        {
            var newProfile = new Profile2MailList(maillistId, item.MailLists.FirstOrDefault().Status);
            var filter = Builders<Profile>.Filter.Eq(g => g.Id, item.Id);
            var update = Builders<Profile>.Update.AddToSet(item.MailLists, newProfile);
            var updatemodel = new UpdateOneModel<Profile>(filter, update);

            bulk.Add(updatemodel);  
        }
        await profileCollection.BulkWriteAsync(bulk);

除非该值已经存在,否则 AddToSet 运算符会向数组添加一个值。