Cosmos DB Mongo API日期过滤不起作用

时间:2018-04-12 16:45:32

标签: mongodb .net-core azure-cosmosdb mongodb-.net-driver

我使用MongoDB .NET驱动程序将以下模型插入到Azure Cosmos DB MongoDB集合中。我试图查询" EventDates.EndDate"领域到目前为止,已经完全不成功。

我的对象模型定义为:

Event.cs

NUMBERS ------> NUMBERS
 1                [1]
 2                [2]
 3                [3]
 4                [4]
 5                [5]
 6                NaN
 7                [7]
 8                NaN

EventDates.cs

namespace BAH.API.BAHEvents.Models
{
    public class Event

    {

        [Required]
        [AutoExpand]
        public List<EventDate> EventDates { get; set; }

        [Key]
        [BsonId]
        public Guid UniqueId { get; set; }
    }
}

MongoDB文档

namespace BAH.API.BAHEvents.Models
{
    public class EventDate
    {
        public DateTime EndDate { get; set; }

        [BsonId]
        public Guid Id { get; set; }

        public DateTime? RegistrationEndDate { get; set; }

        public DateTime StartDate { get; set; }
    }
}

查询表达

{
    "_id" : {
        "$binary" : "RERgIgY190CTyABU/gt84g==",
        "$type" : "03"
    },
    "EventDates" : [
        {
            "_id" : {
                "$binary" : "B0ectlvls0WQIQQr1hcUHA==",
                "$type" : "03"
            },
            "EndDate" : {
                "$date" : 1522774800000
            },
            "RegistrationEndDate" : {
                "$date" : 1522645200000
            },
            "StartDate" : {
                "$date" : 1522771200000
            }
        }
    ]
}

目前,当我通过.NET驱动程序或直接在Azure门户中查询EndDate时,我根本得不到任何结果。为了实现这一目标,我尝试了很多不同的事情,包括:

  1. 添加&#34; [BsonDateTimeOptions(Representation = BsonType.Document,Kind = DateTimeKind.Utc)]&#34;属性为EndDate。这将使用&#34; Ticks&#34;将日期时间存储在mongo中。包括在内,但并没有改变我的结果
  2. 将EndDate的类型更改为DateTimeOffset
  3. 将EndDate存储为长时间的Ticks并查询
  4. 在Cosmos中为EndDate属性添加索引
  5. 我在本地安装了mongodb,并针对它运行了我的代码,并且能够通过EndDate成功查询
  6. 我目前正在使用.net核心开发,在我的Mac上,但我也试过使用Windows虚拟机,没有任何变化。我写了几乎相同的代码node.js和mongoose,并且能够成功查询日期
  7. 我可以查询其他字段,例如UniqueId,没有问题
  8. 在广泛的体育世界中,我做错了什么?这似乎应该是一件非常简单的事情,但我无法快速完成!

0 个答案:

没有答案