使用 MongoDB.Driver 在 C# 中找不到带有日期过滤器的文档

问题描述 投票:0回答:2

我试图按确切的日期时间查找文档,但计数为 0。 这是我的模型:

public class CubeDataModel
    {
        [BsonId]
        [BsonRepresentation(BsonType.ObjectId)]
        public string _id { get; set; }
        ...
        public DateTime DateEnd { get; set; }
        ...
    }

这就是我正在尝试做的:

private readonly IConfiguration _configuration;
        private readonly ILogger<UpdateController> _logger;
        public UpdateController(IConfiguration configuration, ILogger<UpdateController> logger)
        {
            _configuration = configuration;
            _logger = logger;
        }
[HttpPost]
 public ActionResult<CubeDataModel> AddCubeData(string url){
var connectingString = _configuration.GetSection("MongoDB").GetValue<string>("MongoDBString");
var database = _configuration.GetSection("MongoDB").GetValue<string>("MongoDBDatabase");
var collectionName = _configuration.GetSection("MongoDB").GetValue<string>("MongoDBCollection");
var mongodb = getDatabase(connectingString, database).GetCollection<CubeDataModel>(collectionName);
...
string dateString = "15.04.2023";
var docDate = DateTime.ParseExact(dateString, "dd.MM.yyyy" ,null).AddHours(6);
var prev = mongodb.Find<CubeDataModel>(x => x.DateEnd > docDate && x.DateEnd < docDate.AddDays(1)).ToList();
var exact = mongodb.Find<CubeDataModel>(x => x.DateEnd == docDate).ToList();

}

debug 模式下我观察了这些变量:

  • docDate {04/15/2023 06:00:00} 系统.DateTime
  • prev[0].DateEnd {04/15/2023 06:00:00} System.DateTime
  • 上一页.计数 1 个整数
  • 精确计数 0 int

我正在尝试在 DateEnd 之前获取该文档,我不知道如何准确找到我的解决方案,所以如果我的问题重复,您可以发送链接吗?

版本:

  • .net (5.0.17)
  • MongoDB.驱动程序(2.19.0)
.net-5 mongodb-.net-driver
2个回答
0
投票

这是由于

Kind
未设置所致;我通过添加以下代码解决了这个问题:

docDate = DateTime.SpecifyKind(docDate, DateTimeKind.Utc);

0
投票

这是因为您没有指定时区

© www.soinside.com 2019 - 2024. All rights reserved.