C# 如何在官方mongo csharp驱动程序中使用SetSerializationOptions方法?

C# 如何在官方mongo csharp驱动程序中使用SetSerializationOptions方法?,c#,mongodb,C#,Mongodb,我使用它就像: DateTimeSerializationOptions op = new DateTimeSerializationOptions(true); cursor = mc.Find(queryArg).SetLimit(limit).SetSkip(skip).SetSortOrder(sort).SetSerializationOptions(op); 它只设置了日期,但似乎不起作用,我犯了错误吗?SetSerializationOptions通常用于全局定义

我使用它就像:

  DateTimeSerializationOptions op = new DateTimeSerializationOptions(true);
      cursor = mc.Find(queryArg).SetLimit(limit).SetSkip(skip).SetSortOrder(sort).SetSerializationOptions(op);

它只设置了日期,但似乎不起作用,我犯了错误吗?

SetSerializationOptions通常用于全局定义特定类型的序列化方式。在代码中,您试图使用它进行反序列化(读取)

我不知道为什么您可以在
MongoCursor
上设置序列化选项,但正如文档所述:“只有在极少数情况下才需要”。我查找了来源,司机似乎基本上忽略了它

您可能希望更改序列化行为:

使用属性 仅序列化日期组件的最简单方法是使用属性:

public class Test
{
    [BsonDateTimeOptions(DateOnly = true)]
    public DateTime SomeDate {get; set;}
}
使用类映射 或者,您也可以手动注册:

BsonClassMap<Test> map = new BsonClassMap<Test>();
map.MapProperty(p => p.SomeDate).
          SetSerializationOptions(DateTimeSerializationOptions.DateOnlyInstance);
BsonClassMap=新的BsonClassMap();
MapProperty(p=>p.SomeDate)。
SetSerializationOptions(DateTimeSerializationOptions.DateOnlyInstance);

谢谢您的回复。所以我应该怎么做才能只获取日期,实际上,如果bsonValue类型是dateTime,它将UTC存储在服务器中,我想获取LocalTime。我真的不明白您想要实现什么。如果您只想要日期,那么使用上面的选项之一是有意义的。在读取时更改它有点奇怪,我认为只有在迁移数据时才应该使用它。或者,您可以更改模型,使其包含一个可公开访问的仅限日期的DateTime字段。