【问题标题】:De-Serialize multiple BSon ObjectID to String of a MongoDB document in C# .Net在 C# .Net 中将多个 BSon ObjectID 反序列化为 MongoDB 文档的字符串
【发布时间】:2016-06-10 03:09:16
【问题描述】:

我需要将 _idBoss_id 的值从 ObjectId 反序列化为 string 对于使用 C# .Net 的 mongodb 集合中的所有文档

我的收藏 Employee 是(这里我只粘贴了 2 个文档,实际上我有超过 10K 的文档)

{
    "_id" : ObjectId("575845a713d284da0ac2ee81"),
    "Boss_id" : ObjectId("575841b313d284da0ac2ee7d"),
    "Emp_Name" : "Raj",
}

{
    "_id" : ObjectId("575845d213d284da0ac2ee82"),
    "Boss_id" : ObjectId("575841b313d284da0ac2ee7d"),
    "Emp_Name" : "Kumar"
}

我的 C# 源代码 - 模型类 EmployeeModel

public class EmployeeModel
{
    [BsonId]
    [BsonRepresentation(BsonType.ObjectId)]
    public string Id { get; set; }

    [BsonId]
    [BsonRepresentation(BsonType.ObjectId)]
    public string Boss_Id { get; set; }

    public string Emp_Name { get; set; }
}

我的 C# MongoDB 代码:

private static IMongoClient _client;
private static IMongoDatabase _database;

_client = new MongoClient();
_database = _client.GetDatabase("RMS");
var collection = _database.GetCollection<EmployeeModel>("Employee");

BsonDocument temp = new BsonDocument("Emp_Name", "Raj");
var cItem = collection.Find(temp).ToList();

if ((cItem != null) && (cItem.Count > 0))
{
    _EmpList = cItem;
} 

抛出异常

类型的属性 MongoDB.Bson.Serialization.Attributes.BsonIdAttribute 只能是 应用于单个成员。

请帮助我如何获取文件?

【问题讨论】:

  • 我认为错误试图告诉您不能使用 2 个字段作为 BsonType.ObjectId

标签: c# mongodb serialization deserialization bson


【解决方案1】:

试试下面的代码。 [BsonId] 是文档的 ID,因此在 Json 中它是“_id”元素。这就是它的全部标识

public class EmployeeModel
{
    [BsonId]
    [BsonRepresentation(BsonType.ObjectId)]
    public string Id { get; set; }


    [BsonRepresentation(BsonType.ObjectId)]
    public string Boss_Id { get; set; }

    public string Emp_Name { get; set; }
}

【讨论】:

  • 是的。你是对的。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-01-08
  • 2016-02-14
  • 2011-09-02
  • 2012-05-04
  • 2020-05-21
  • 2020-06-01
  • 1970-01-01
相关资源
最近更新 更多