博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Mongodb for .Net Core 驱动的应用
阅读量:7051 次
发布时间:2019-06-28

本文共 3290 字,大约阅读时间需要 10 分钟。

一:我在做.net core 应用mongodb的sdk时,查阅了不少资料,故记录下来,以方便查阅。mongodb类库的版本 mongodb driver 2.4.3,一下方法均来自此版本文件

先看看类库的中的几个方法 public static IFindFluent
Find
(this IMongoCollection
collection, FilterDefinition
filter, FindOptions options = null);public static UpdateResult UpdateMany
(this IMongoCollection
collection, Expression
> filter, UpdateDefinition
update, UpdateOptions options = null, CancellationToken cancellationToken = default(CancellationToken)); 我们看到几个重要的类 UpdateDefinition,FilterDefinition这些是什么,怎么使用?别急看看下面个这个类,就有头绪了

二:Builders

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

三:进入UpdateDefinitionBuilder,SortDefinitionBuilder,ProjectionDefinitionBuilder,IndexKeysDefinitionBuilder,FilterDefinitionBuilder这5个类中可以看到,里面包含了各种方法

FilterDefinitionBuilder这个一般用作查询条件            var time = DateTime.Now;            var list = new List
>(); list.Add(Builders
.Filter.Lt("AddTime", time.AddDays(400))); list.Add(Builders
.Filter.Gt("AddTime", time)); FilterDefinition
filter = Builders
.Filter.And(list);
Builders
.Filter. 后面包含各种方法,来对查询的条件进行组合
UpdateDefinitionBuilder这个一般用作要修改里                //要修改的字段                var list = new List
>(); foreach (var item in t.GetType().GetProperties()) { if (item.Name.ToLower() == "id") continue; list.Add(Builders
.Update.Set(item.Name, item.GetValue(t))); } var updatefilter = Builders
.Update.Combine(list);
Builders
.Update. 后面包含各种方法,来对修改的条件进行组合

剩下的3个方法也一样

四:异步方法的使用

当只有查询条件,没有其他附加条件如排序,制定查询字段时,这2个方法查询出来的结果是一样的
return client.FindAsync(filter).Result.FirstOrDefault(); return await client.Find(filter).FirstOrDefaultAsync(); 当带有其他附加条件时,上面的第一个方法就不可以使用了,必须要要使用第二个方法才行 return await client.Find(filter).Sort(sort).Project
(projection).Skip((pageIndex - 1) * pageSize).Limit(pageSize).ToListAsync();

 

转载于:https://www.cnblogs.com/jjg0519/p/9109729.html

你可能感兴趣的文章
代理模式
查看>>
vue文档阅读笔记——计算属性和侦听器
查看>>
单元测试系列:Mock工具之Mockito实战
查看>>
二手GTX650
查看>>
Guava学习-缓存
查看>>
hexSHA1散列加密解密(不可逆)
查看>>
Pinterest架构:两年内月PV从零到百亿 - 非常值得参考【转】 - HorsonJin - 博客园...
查看>>
Swift设置自动行高
查看>>
171. Excel Sheet Column Number
查看>>
简单深搜
查看>>
关于获取客户端Mac地址
查看>>
紫书 例题 10-9 UVa 1636 (概率计算)
查看>>
51nod 01背包
查看>>
outlook anywhere 配置
查看>>
冲刺一 (day 3)
查看>>
Beep使用
查看>>
关于php网络爬虫phpspider。
查看>>
OpenGL的glRotatef旋转变换函数详解
查看>>
c#中 ==与equals有什么区别
查看>>
Oracle Group By ROLLUP-SubTotal
查看>>