如何从存在特定字段的IMongoCollection中获取所有项目

时间:2019-11-07 07:38:58

标签: c# mongodb

我有一个供客户使用的mongo收藏品。共有280条记录。

前110条记录没有BSON对象ID,它们仅具有类型为int的customerId字段。

在第一个110之后,其他记录同时具有customerId字段和_id对象ID字段。

我在解决方案中找到的

代码为此具有一个预制模型,该模型中也定义了对象ID。

如果我做这样的事情:

List<Customer> customers = _customerCollection.Find(_ => true).ToList();

我收到一个错误,因为前110条记录中没有BSON对象ID。如果我更改模型并注释掉该对象ID,则当到达具有该对象ID的对象时会收到错误消息。

有没有办法我可以解决这个问题并使之工作?我正在迁移数据并将其重新映射到其他模型。

我没有制作mongoDB或现有代码,也从未使用过mongoDB,所以我对此的了解有限。

更新-示例代码

这是课程的代码

public class Customer
{
    //[BsonId]
    //[BsonIgnoreIfDefault]
    //[JsonIgnore]
    //public ObjectId Id;

    //public int CustomerId { get; set; }

    public string CustomerName { get; set; }

    public string CustomerDomain { get; set; }

    ...omitted other fields...

}

这是示例文档

{
"_id" : ObjectId("5c05a78ab66f775aefecafd9"),
"CustomerId" : 1000006,
"Warehouse" : "505",
"CustomerName" : "Some name",
"Email" : ""

}

1 个答案:

答案 0 :(得分:0)

我通过两次复制收藏来解决了这个问题。在一个副本中,我删除了所有具有文档的BSON对象ID,在另一个副本中,删除了其他系列的文档。

我运行了两次代码,更改了模型以适应要迁移的文档。 (例如,一次使用对象ID,一次使用int ID)