将JSON数据存储在MongoDB中的_v属性之外

时间:2015-05-24 18:35:09

标签: c# mongodb bson

我使用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"

是否可以在不创建任何类型对象的情况下存储这样的数据?

2 个答案:

答案 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 >查询数据库。