繁体   English   中英

C#类到BSON往返

[英]C# class to BSON roundtrip

我试图使用MongoDB来存储我在应用程序中存在的某些类。

我使用的代码是

string json = JsonConvert.SerializeObject(item);
BsonDocument document = BsonDocument.Parse(json);
...
await collection.InsertOneAsync(document);

这似乎工作正常。 当我从MongoDB中检索文档时,会得到一个BsonDocument,其中添加了“ _id”属性。

如何返回原始类的实例(不具有_id属性)

MongoDB自动添加对象ID(_id)属性作为主键。 在您向MongoDB中进行任何形式的插入时都会发生这种情况(无论您导入JSON,BSON,CSV还是其他方式)

http://docs.mongodb.org/manual/reference/object-id/

如果要在C#应用程序中解决此问题,一种选择是从MongoDB导出到CSV,然后使用一种工具将CSV导入JSON,同时有选择地避免使用_id。 但是,这似乎有点复杂。

也许您可以只保留_id属性并将其设置为原始C#类中的可选参数? 您能解释为什么_id参数存在是一个问题吗?

从数据库中读取_id字段后,还可以从其删除BidDocument:

var document = collection.Find(new BsonDocument()).FirstAsync();
document.Remove("_id");

这只会从内存中的BsonDocument(文档变量的值)中删除_id,而不会从数据库中存储的文档中删除_id。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM