Метод AddToSet драйвера MongoDb С# 2.0

У меня есть следующий код, который был реализован с помощью драйвера c# MongoDb 2.0. Но мне нужен доступ к MailLists коллекции Profile, которая будет вставлена. Я написал ожидаемое решение, используя p в конструкторе, но как реализовать его с помощью нескольких операций?

IMongoCollection<Profile> dbCollection = DetermineCollectionName<Profile>();

var filter = Builders<Profile>.Filter.In(x => x.ID, profiles.Select(x => x.ID));

var updateMl = Builders<Profile>.Update.AddToSet(p => p.MailLists, new Profile2MailList
                        {
                            MailListId = maillistId,
                            Status = p.MailLists.MergeMailListStatuses(),
                            SubscriptionDate = DateTime.UtcNow
                        });
        
dbCollection.UpdateManyAsync(filter, updateMl, new UpdateOptions { IsUpsert = true });

person Vladyslav Furdak    schedule 07.08.2015    source источник


Ответы (1)


Я нашел следующее решение:

IMongoCollection<Profile> dbCollection = DetermineCollectionName<Profile>();

var filter = Builders<Profile>.Filter.In(x => x.ID, profiles.Select(x => x.ID));

var profile2maillists = new List<Profile2MailList>();

foreach(var profile in profiles)
 {
     profile2maillists.Add(
         new Profile2MailList
                 {
                            MailListId = maillistId,
                            Status = profile.MailLists.MergeMailListStatuses(),
                            SubscriptionDate = DateTime.UtcNow
                 });
 }
var updateMl = Builders<Profile>.Update.AddToSetEach(p => p.MailLists, profile2maillists);
dbCollection.UpdateManyAsync(filter, updateMl, new UpdateOptions { IsUpsert = true });
person Vladyslav Furdak    schedule 07.08.2015
comment
что на самом деле делает AddToSetEach? - person deadManN; 30.05.2019