如何为一个不是我的MongoDB集合创建一个类?

cbwuti44  于 2022-11-22  发布在  Go
关注(0)|答案(4)|浏览(135)

我是MongoDB的新手,遇到了一些问题。按照这里的简单指南(http://docs.mongodb.org/ecosystem/tutorial/getting-started-with-csharp-driver),我连接到了一个不是我自己创建的数据库。所以当示例包括如下内容时:

var collection = database.GetCollection<Entity>("entities");

它不适用于我连接到的实际数据库,因为我没有该类。它充满了我无法猜测的类型..例如:

/* 0 */
{
  "_id" : ObjectId("54f0f990cea606d49fafd5h2"),
  "Time" : ISODate("2015-02-27T23:11:12.301Z"),
  "Timecode" : "15:11:12:18",
  "Round" : "1",
  "FighterID" : 5,
  "FighterName" : "John Doe",
  "TypeID" : 1,
  "Type" : "jab",
  "HandID" : 2,
  "Hand" : "left",
  "Force" : 0.0,
  "Velocity" : 8.0789527768068456,
  "Confidence" : 67.689217510307827,
  "ImpactType" : 1,
  "FightID" : "fea5dc60-b898-11e4-ac68-a5f571ea05d9"
}

我不知道如何创建一个类,因为类成员相当复杂。
我该怎么做呢?

7kjnsjlb

7kjnsjlb1#

我不知道有什么方法可以像EF和linq-to-sql那样从mongodb中创建类。
我建议你做两件事中的一件,我相信第二个解决方案会更难,但更接近你的要求。
1.尝试使用bsonextractelements属性捕获所有复杂字段

public MyClass {
 // fields and properties
 [BsonExtraElements]
 public BsonDocument CatchAll { get; set; }
}

或:
1.使用反射并将属性的名称以及每个属性的数据类型存储到txt文件中。2然后手动创建你的类。

23c0lvtd

23c0lvtd2#

这个问题的答案很晚了,但我一直在使用this website为我生成C#类。它的工作原理是解析提供给它的JSON数据,并生成可用于反序列化所述JSON的相关类。
当涉及到处理从MongoDB中获取的json时,它有几个问题:

  • 它不处理“ObjectId”,如果您只是使用从Mongo提取的Json,当您点击generate时,您将得到一个初始解析错误。然而,您可以通过删除“ObjectId”前缀(和伴随的括号)来轻松地修复这个错误。
  • 它不能很好地处理包含空格的Json字段名,但是它仍然为您生成一个类,您可以快速“修复”任何空格字段
  • 如果您有一个Json集合,其中的字段数量不稳定(例如,有些文档包含“Diety”字段,但有些文档不包含),那么您需要粘贴一个json对象数组,以确保生成的类覆盖所有可能的组合
  • 与上面一样,如果您有一些可以为空的字段,除非您包含说明这一点的Json,否则解析器无法知道它应该接受空值,因此请确保包含足够的示例以涵盖所有组合,或者准备好自己对生成的代码进行一些更改(比如在一些字段类型后面加上问号;))

就像我说的--很晚才回答,但这个问题在谷歌上出现了很多次,所以我想我会加上这个,希望它能帮助其他人以后

wgx48brx

wgx48brx3#

回答晚了,但可能会帮助别人。跳过了一些属性。

public class Entity
{
    [BsonId]
    public MongoDB.Bson.ObjectId _id { get; set; }

    [BsonElement("id")]
    public int Id { get; set; }

    [BsonElement("Time")]
    public DateTime Time{ get; set; }

    [BsonElement("Round")]
    public string Round{ get; set; }

    [BsonElement("Force")]
    public double? Force{ get; set; }

    [BsonElement("FightID")]
    public string FightID{ get; set; }
}
kuarbcqp

kuarbcqp4#

甚至后来的党,但(受启发的Sk93的答案),我已经找到了this websitehttp://bson2csharp.com/),了解MongoDB BSON。
您访问的页面不存在

相关问题