MongoDB .Net driver 2.0 Pull (remove element)

前端 未结 4 1485
谎友^
谎友^ 2020-11-28 12:11

Can you help me to run correctly \"Pull (remove)\" with 2.0 driver.

I have a collection like this and I want to remove first follower named as fethiye by follower fi

4条回答
  •  刺人心
    刺人心 (楼主)
    2020-11-28 12:39

    Assuming you have a collection name Person, You can use PullFilter to remove the records from array

    var filterBuilder = Builders.Filter.Eq(person => person.username, "bodrum");
    
    var updateBuilder = Builders.Update.PullFilter(p => p.followerList,
                           Builders.Filter.Eq(per => per.follower, "fethiye"));
    
    var updateResult = collection.UpdateOne(filterBuilder, updateBuilder);
    
    Console.WriteLine(
                $"MatchedCount: {updateResult.MatchedCount}, ModifiedCount: {updateResult.ModifiedCount}");
    

    If we also need to remove array of values inside a filtered document we can replace the update builder with this line

    var updateBuilder = Builders.Update.PullFilter(p => p.followerList,
                       Builders.Filter.In(per => per.follower, new List {"fethiye", "izmir"}));
    

    Also to save many document, updateOne can be replace with updateMany

    var updateResult = collection.UpdateMany(filterBuilder, updateBuilder);
    

提交回复
热议问题