• MongoDB for .Net Core 查询条件之 Builders类


    使用MongoDB有段时间了 今天终于有用总结下

    UpdateDefinitionBuilder,SortDefinitionBuilder,ProjectionDefinitionBuilder,IndexKeysDefinitionBuilder,FilterDefinitionBuilder应用

    Builders

    //
    // 摘要:
    // A static helper class containing various builders.
    //
    // 类型参数:
    // TDocument:
    // The type of the document.
    public static class Builders<TDocument>
    {
    //
    // 摘要:
    // Gets a MongoDB.Driver.FilterDefinitionBuilder`1.
    public static FilterDefinitionBuilder<TDocument> Filter { get; }
    //
    // 摘要:
    // Gets an MongoDB.Driver.IndexKeysDefinitionBuilder`1.
    public static IndexKeysDefinitionBuilder<TDocument> IndexKeys { get; }
    //
    // 摘要:
    // Gets a MongoDB.Driver.ProjectionDefinitionBuilder`1.
    public static ProjectionDefinitionBuilder<TDocument> Projection { get; }
    //
    // 摘要:
    // Gets a MongoDB.Driver.SortDefinitionBuilder`1.
    public static SortDefinitionBuilder<TDocument> Sort { get; }
    //
    // 摘要:
    // Gets an MongoDB.Driver.UpdateDefinitionBuilder`1.
    public static UpdateDefinitionBuilder<TDocument> Update { get; }
    }

     案例:

    FilterDefinitionBuilder这个一般用作查询条件

    var builderlist = new List<FilterDefinition<BsonDocument>>();
    builderlist.Add(Builders<BsonDocument>.Filter.Gte("EndTime", DateTime.UtcNow));
    builderlist.Add(Builders<BsonDocument>.Filter.Eq("Type", BanType.Freeze));
    builderlist.Add(Builders<BsonDocument>.Filter.Eq("RoleId", form.RoleId));
    var filter = Builders<BsonDocument>.Filter.And(builderlist);
    
    //同步
    
    _mongoDbContext.Collection<BsonDocument>().Find(filter).SortByDescending(n => n.EndTime).ToList();
    
    //异步
    await _mongoDbContext.Collection<BsonDocument>().Find(filter).SortByDescending(n => n.EndTime).ToListAsync();

    UpdateDefinitionBuilder 此类用在修改数据的时候
    FilterDefinition<BsonDocument> filter = Builders<BsonDocument>.Filter.Eq("_id", id);
    var list = new List<UpdateDefinition<BsonDocument>>();
    list.Add(Builders<BsonDocument>.Update.Set("EndTime", DateTime.UtcNow.AddDays(day)));
    list.Add(Builders<BsonDocument>.Update.Set("Operator", new UserSnapshot { Id = UserId, Name = UserName }));
    list.Add(Builders<BsonDocument>.Update.Set("Remark", Remark));
    list.Add(Builders<BsonDocument>.Update.Set("Category", Category));
    var setfilter = Builders<BsonDocument>.Update.Combine(list);
    
    //同步调用
    
    _mongoDbContext.Collection<BsonDocument>().UpdateOne(filter , setfilter);
    
    //异步调用
    await _mongoDbContext.Collection<BsonDocument>().UpdateOneAsync(filter , setfilter);
    
     

    ProjectionDefinitionBuilder  查询指定的值

    //创建约束生成器
    FilterDefinitionBuilder<BsonDocument> builderFilter = Builders<BsonDocument>.Filter;
    ProjectionDefinitionBuilder<BsonDocument> builderProjection = Builders<BsonDocument>.Projection;
    //Include 包含某元素 Exclude 不包含某元素
    ProjectionDefinition<BsonDocument> projection = builderProjection.Include("RoleId");
    
    var list = await _mongoDbContext.Collection<BsonDocument>().Find(builderFilter.Empty).Project(projection).ToListAsync();
    
     
    
    //创建约束生成器
    FilterDefinitionBuilder<BsonDocument> builderFilter = Builders<BsonDocument>.Filter;
    ProjectionDefinitionBuilder<BsonDocument> builderProjection = Builders<BsonDocument>.Projection;
    //Include 包含某元素 Exclude 不包含某元素
    ProjectionDefinition<BsonDocument> projection = builderProjection.Exclude("RoleId");
    
    _mongoDbContext.Collection<BsonDocument>().Find(builderFilter.Empty).Project(projection).ToListAsync();

    SortDefinitionBuilder 排序 

    FilterDefinitionBuilder<BsonDocument> builderFilter = Builders<BsonDocument>.Filter;
    
    SortDefinitionBuilder<BsonDocument> builderSort = Builders<BsonDocument>.Sort;
    
    //排序约束 Ascending 正序 Descending 倒序
    SortDefinition<BsonDocument> sort = builderSort.Ascending("RoleId");
    
    SortDefinition<BsonDocument> sort2 = builderSort.Descending("RoleId");
    
    var list = await _mongoDbContext.Collection<BsonDocument>().Find(builderFilter.Empty).Sort(sort).ToListAsync();


  • 相关阅读:
    使用VB获得系统目录路径
    自动点击页面中的JavaScript链接
    vb 随机数
    进程监控程序 监视进程的创建
    UTF8 Encoding rules
    How to create and apply patch by GIT
    Java Access Bridge Why IsJavaWindow always returns false?
    TomatoUSB 挂载了/jffs/opt之后登录出现$提示符以及VI内存耗尽等各种异常
    MMU解释 MMU启用后,CPU的内存访问请求会被MMU截获
    如何调整Linux内核启动中的驱动初始化顺序
  • 原文地址:https://www.cnblogs.com/shiyilang398/p/11339009.html
Copyright © 2020-2023  润新知