我正在使用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中.我不想将所有内容存储在“子”属性中.我希望它看起来像这样:
_id = ObjectId("55618d35d747199c0a486fe0")
_t = MongoDB.Bson.BsonDocument, MongoDB.Bson
username = "JohDoe"
password = "xxxxx"
email = "em@il.com"
是否可以存储这样的数据而不创建我自己的任何类型对象?
解决方法:
使用GetCollection< dynamic>等效于使用GetCollection< object>,当集合的类型是object时,每个值都需要与_t和_v字段一起存储. _t字段表示类型,_v字段表示值.
你能使用GetCollection< BsonDocument>代替?这将导致文档直接存储而不需要_t和_v字段.