C#获取mongoDB的ObjectId 映射到对象中失败

从mongoDB聚合获取到了 Bson,现在想把这个Bson转换为实体对象
可是 ObjectId始终无法转换,希望大牛们解一下惑

可以怎样把 Bson 绑定到一个自定义 对象上
或者,怎样可以把获取到的 ObjectId 转 string
感激不尽

在步骤二,Json转换为实体对象时,提示我ObjectId转换失败

详细:
1.这是通过聚合和获取到的结果
`

        List<BsonDocument> pipe = mRoot.answerRecord.GetAggregate()
            .Match(x => x.userId == userId && x.subjectId == subjectId)
            .Match(x => x.correct == 0 || x.correct == 1)
            .Sort(BsonDocument.Parse("{ 'mtime' : -1 }"))
            .Lookup("question", "questionId", "_id", "question")
            .Skip(pageSize * (page - 1))
            .Limit(pageSize).ToList();

`
2.这是我尝试遍历 并转换为实体对象
`foreach(var p in pipe)

            {
                //TODO ObjectId 转换存疑
                var j = p.ToJson();
                ErrorRecordsResult r = Newtonsoft.Json.JsonConvert.DeserializeObject<ErrorRecordsResult>(j);
                results.Add(r);
            }

`

3.实体对象
`public class ErrorRecordsResult

{
    public ObjectId _id { get; set; }

    public int cate; 
}`
阅读 4.8k
2 个回答

你用的是 MongoDB.Bson 这个库么?直接 ToString() 不就完了?


针对评论区的补充:

image.png

其实可以直接转换为指定类对象,而不用先转换为BsonDocument的

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进