首页 > 解决方案 > MongoDriver c# 按日期字段中的月份名称过滤

问题描述

要求:需要按月过滤mongo文档(数据以日期时间存储在mongo中)

使用的代码: var expenseMonthFilter = Builders<MyDocument>.Filter.Eq(i => i.ExpenseDate.Month, 12);

异常获取:Unable to determine the serialization information for i => i.ExpenseDate.Month.

Mongo 数据图像

标签: c#mongodbmongodb-.net-driver

解决方案


选择当月的所有文档时,条件需要检索所有 ExpenseDate 大于或等于该月开始日期且小于下个月开始日期的文档,如下所示:

var startOfMonth = new DateTime(selectedYear, selectedMonth, 1, 0, 0, 0, DateTimeKind.Utc);
var startOfNextMonth = startOfMonth.AddMonths(1);
var bldr = Builders<MyDocument>.Filter;
var expenseMonthFilter = bldr.And(
    bldr.Gte(x => x.ExpenseDate, startOfMonth), 
    bldr.Lt(x => x.ExpenseDate, startOfNextMonth));

请注意,在上面的示例中, selectedYear 代表年份, selectedMonth 代表应检索数据的月份。


推荐阅读