.Net Core对MongoDB执行多条件查询


当前第2页 返回上一页

这里还踩了一个坑. MongoDB里存储的时间是格林尼治时间, 插入8:00, 查询时会发现变成了0:00,所以定义时间属性的时候需要加个标签

1

2

[BsonDateTimeOptions(Kind = DateTimeKind.Local)]

public DateTime logtime { get; set; }

这里的OprLogModel是定义了查询条件的类.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

public static LogPager<log_operate> Get_operate_log_mongo(OprLogModel qModel)

{

  LogPager<log_operate> pager = new LogPager<log_operate>();

  FilterDefinition<log_operate> filters;

 

   var sortbuilder = Builders<log_operate>.Sort;

  var sort = sortbuilder.Descending("operate_time");

 

  #region 用户权限过滤

  IEnumerable<string> IdList = dev_deviceRepository.GetBinding(qModel.user_id);

   filters = Builders<log_operate>.Filter.In("device_id", IdList);

  #endregion

 

  if (!string.IsNullOrEmpty(qModel.device_id))

  {

    var filters_did = Builders<log_operate>.Filter.Eq("device_id", qModel.device_id);

    filters = Builders<log_operate>.Filter.And(filters, filters_did);

  }

  if (qModel.sDate != null)

  {

    var filters_sdate = Builders<log_operate>.Filter.Gte<DateTime>("operate_time", Convert.ToDateTime(qModel.sDate));

    filters = Builders<log_operate>.Filter.And(filters, filters_sdate);

  }

  if (qModel.eDate != null)

  {

    var filters_edate = Builders<log_operate>.Filter.Lte<DateTime>("operate_time", Convert.ToDateTime(qModel.eDate));

    filters = Builders<log_operate>.Filter.And(filters, filters_edate);

  }

  int total;

  pager.data = MongoTools<log_operate>.FindListByPage(filters, qModel.pageindex, (qModel.pageindex - 1) * qModel.pagesize, out total, null, sort);

  pager.total = total;

  return pager;

}

#endregion

也可以先定义一个空的filterdefinition, 然后与各查询条件通过And聚合:

1

2

3

FilterDefinition<log_operate> filters = FilterDefinition<log_operate>.Empty;

var filters_idlist = Builders<log_operate>.Filter.In("device_id", IdList);

filters = Builders<log_operate>.Filter.And(filters, filters_idlist);

以上就是.Net Core对MongoDB执行多条件查询的详细内容!

返回前面的内容

相关阅读 >>

.net中core如何利用redis发布订阅的实例分析

详细分析 .net core 构成体系(图)

.net core之实现下载文件的实例

分享n种.net获取当前路径的的实例

c#连接ftp时路径出现问题的解决方法

c#中关于扩展方法的实例分析

浅谈.net core开发日志中edge.js是什么?如何用?

.net core中如何使用entity framework操作postgresql?

c#简单工厂模式是什么?

c#中.net框架的简介

更多相关阅读请进入《.net》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...