[英]MongoDB C# driver: LINQ filtering on enum serialises enum as int
我正在尝试在 Mongo 数据库中查询一组 GeoJSON。 文档看起来有点像这样:
{
"_id" : ObjectId("5db2d9d7a9912b215bb6bfc8"),
"type" : "Feature",
"properties" : {
//snip
},
"geometry" : {
"type" : "Polygon",
"coordinates" : [ //snip ]
}
}
我的几何属性的 C# class 如下所示:
public class Geometry
{
[JsonProperty("type")]
[BsonElement("type")]
[BsonRepresentation(BsonType.String)]
public GeometryType Type { get; set; }
}
但是我有一些 LINQ 过滤代码有点像这样:
Builders<Feature>.Filter.Ne(f => f.Geometry.Type, GeometryType.LineString)
但这会在 Mongo 中生成一个查询,如下所示:
"geometry.type" : {
"$ne" : 1
}
这没有按预期过滤,因为它将 LineString 序列化为 1,而不是“LineString”,这是它在数据库中的表示方式。 从字符串反序列化工作正常。
如何让 Mongo 驱动程序生成正确的查询?
我必须在启动时为枚举类型注册一个序列化器,如下所示:
BsonSerializer.RegisterSerializer(new EnumSerializer<GeometryType>(BsonType.String));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.