【发布时间】:2019-04-04 05:54:02
【问题描述】:
我有一个将数据写入 MONGODB 的应用程序。
在文档中,我有一个名为 UpdatedOn 的字段。在此,我以字符串格式编写日期时间,如下所示:
DateTime.Now.ToString("MM/dd/yyyy HH:mm:ss")
我知道我应该只使用日期类型,现在它作为字符串存储在数据库中。
现在我需要在 2 个日期之间根据此字段过滤数据。
说这样的话:
开始日期:“01/01/2019”
结束日期:“31/01/2019”
这是代码,我在下面使用过(不起作用)
IMongoCollection<Order> OrderCollection = GetOrderCollection();
List<OrderFilter> lstJobs;
FilterDefinitionBuilder<Order> OrderFilter = Builders<Order>.Filter;
DateTime start = Convert.ToDateTime("01/01/2019");
DateTime end = Convert.ToDateTime("31/01/2019");
var filter = OrderFilter.Gte("UpdatedOn", start) &
OrderFilter.Lt("UpdatedOn", end);
var fields = Builders<Order>.Projection.Include(p => p.Id);
lstOrders = await OrderCollection.Find(filter).Project<OrderFilter>(fields).ToListAsync<OrderFilter>().ConfigureAwait(false);
OrderFilter 类:
public class OrderFilter
{
[DataMember(Name = "id")]
public string Id { get; set; }
}
订单类:
public class Order
{
[DataMember(Name = "id")]
public string Id { get; set; }
[DataMember(Name = "UpdatedOn")]
public string UpdatedOn { get; set; }
}
因为 UpdatedOn 是字符串并且已经插入了一些数据。改变它是不切实际的。
在这种情况下,谁能帮我过滤一下。我可以在代码本身中进行任何类型转换或转换并进行过滤。
非常感谢!
【问题讨论】:
-
开始,将
DateTime start = Convert.ToDateTime("01/01/2019");更改为DateTime start = Convert.ToDateTime("2019/01/01")以避免日月歧义 -
@JohnB 我做到了。虽然没有帮助