【问题标题】:MongoDB Map class from nested elements in C#来自 C# 中嵌套元素的 MongoDB Map 类
【发布时间】:2016-02-12 12:27:59
【问题描述】:

我已经注册了一个从餐厅集合中提取地址的类:

BsonClassMap.RegisterClassMap<RestaurantAddress>(map =>
{
    map.MapMember(c => c.Id).SetElementName(("_id"));
    map.MapMember(c => c.Building).SetElementName("address.building");
    map.MapMember(c => c.Street).SetElementName("address.street");
    map.MapMember(c => c.ZipCode).SetElementName("address.zipcode");
});

Mongo 文档如下所示:

{
    "_id" : ObjectId("56bb82621ff72e0d9ba267cb"),
    "address" : {
        "building" : "6409",
        "coord" : [ 
            -74.005289, 
            40.628886
        ],
        "street" : "11 Avenue",
        "zipcode" : "11219"
    },
    "borough" : "Brooklyn",
    "cuisine" : "American ",
    "grades" : [ 
        {
            "date" : ISODate("2014-07-18T00:00:00.000Z"),
            "grade" : "A",
            "score" : 12
        }, 
        {
            "date" : ISODate("2013-07-30T00:00:00.000Z"),
            "grade" : "A",
            "score" : 12
        }
    ],
    "name" : "Regina Caterers",
    "restaurant_id" : "40356649"
}

当我得到文档时,嵌套的元素都是空的:

[Test]
public void DeserializeToAddress()
{
    var collection = _database.GetCollection<RestaurantAddress>("grades");

    var address = collection.Find(a => a.Id == new ObjectId("56bb82621ff72e0d9ba267cb")).Limit(1).Single();

    Assert.That(address.Id, Is.Not.Null);
    Assert.That(address.Building, Is.Not.Null);
    Assert.That(address.Street, Is.Not.Null);
}

我应该如何引用嵌套元素?

要序列化的类是:

internal class RestaurantAddress
{
    public ObjectId Id { get; set; }
    public string Building { get; set; }
    public string Street { get; set; }
    public string ZipCode { get; set; }
    public Point CoordsPoint { get; set; }
}

Currenlty,我对CoordsPoint 对象没有任何兴趣。这是以后的练习。

【问题讨论】:

  • 你能发布你的类定义吗?

标签: c# mongodb mongodb-.net-driver


【解决方案1】:

我们目前不支持将嵌套元素拉出到父文档中。这将是一个功能请求。您可以在 CSHARP 项目下的 jira.mongodb.org 上归档。或者,如果您愿意,您可以编写一个自定义序列化程序来处理这种特殊情况。

克雷格

【讨论】:

  • 干杯,我会添加一个请求。我是点击“创建问题”还是有其他链接?
  • 你的意思是你支持拉嵌套文档?我无法将嵌套对象(尤其是嵌套数组的成员)反序列化为 c# 对象吗?
猜你喜欢
  • 1970-01-01
  • 2011-07-31
  • 1970-01-01
  • 1970-01-01
  • 2018-10-06
  • 2016-06-05
  • 2020-03-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多