MongoDB内嵌文档操作

实体定义:

    [BsonIgnoreExtraElements]
    public class Person : BaseEntity
    {
        public string FirstName { get; set; }

        public string LastName { get; set; }

        public string Password { get; set; }

        public List<Attr> Attribute { get; set; }
    }


    public class Attr 
    {
        public string Id { get; set; }

        public string Name { get; set; }
    }

数据库存储内容形式:

{
    "_id" : ObjectId("5af189270d8ef62bb49d045e"),
    "FirstName" : "1",
    "LastName" : "2",
    "Password" : "3",
    "Attribute" : [ 
        {
            "_id" : "4",
            "Name" : "4"
        }, 
        {
            "_id" : "5",
            "Name" : "5"
        }, 
        {
            "_id" : "6",
            "Name" : "6"
        }
    ]
}

1. 删除内嵌字段的值:

 如删除Attribute内嵌字段:

 var filter = Builders<Person>.Filter.Where(x => x.Id == id);
 var update = Builders<Person>.Update.Unset(x => x.Attribute);
 var result = this.personRepository.Collection.UpdateOne(filter, update);

2. 删除Attribute集合中Id等于6的内嵌文档

var filter = Builders<Person>.Filter.Where(x => x.Id == id);
var update = Builders<Person>.Update.PullFilter<Attr>(x => x.Attribute, y => y.Id.Equals("6"));
var result = this.personRepository.Collection.UpdateOne(filter, update);
扫描二维码关注公众号,回复: 179839 查看本文章

猜你喜欢

转载自www.cnblogs.com/lenmom/p/9010501.html