我使用MongoDB作为我的Web应用程序的数据库。我正在寻找一种插入和检索动态JSON数据的方法,而不需要为它创建任何类型的类。
我的Web应用程序发送一个JSON字符串。然后在后端我将该JSON字符串转换为BsonDocument
并将其插入MongoDB:
var obj = BsonDocument.Parse(json.ToString());
Db.GetCollection<dynamic>("Items").InsertOneAsync(obj);
这很好,除了MongoDB中的结构如下所示:
_id = ObjectId("55618d35d747199c0a486fe0")
_t = MongoDB.Bson.BsonDocument, MongoDB.Bson
_v = (3 fields)
username = "JohDoe"
password = "xxxxx"
email = "em@il.com"
换句话说,我的JSON对象存储在_v
中。我不想把所有东西存放在&#34; sub&#34;属性。我希望它看起来像这样:
_id = ObjectId("55618d35d747199c0a486fe0")
_t = MongoDB.Bson.BsonDocument, MongoDB.Bson
username = "JohDoe"
password = "xxxxx"
email = "em@il.com"
是否可以在不创建任何类型对象的情况下存储这样的数据?
答案 0 :(得分:4)
使用GetCollection&lt; dynamic&gt;等效于使用GetCollection&lt; object&gt;,当集合的类型是object时,每个值都需要与_t和_v字段一起存储。 _t字段表示类型,_v字段表示值。
你能使用GetCollection&lt; BsonDocument&gt;代替?这将导致文档直接存储而不需要_t和_v字段。
答案 1 :(得分:0)
就我而言,要解决我正在使用的问题:
GetCollection< BsonDocument >
插入新文件。
GetCollection< dynamic >
查询数据库。