【发布时间】:2014-07-22 08:53:36
【问题描述】:
我有一个 HTML 表单,它可以创建具有动态结构的文档。 下面是用户插入的一些数据示例。
一个非常简单的文档
{
"name" : "Simple element",
"notes" : "Lorem ipsum rocks",
"values" : [
{
"name" : "An array with 2 values",
"value" : [ 100,200],
"editable" : true
}
]
}
还有更复杂的文档
{
"name" : "Complex element",
"notes" : "Lorem ipsum rocks",
"values" : [
{
"name" : "A text value",
"value" : "ABCDEF",
"editable" : true
},
{
"name" : "A numeric value",
"value" : 100,
"editable" : false
},
{
"name" : "A array of 4 values",
"value" : [1,2,3,4],
"editable" : false
},
{
"name" : "A matrix 2x4",
"value" : [[1,2,3,4],[5,6,7,8]],
"editable" : false
}
]
}
文档必须使用 C# MongoCharp 驱动程序和 NancyFX 保存在 MongoDB 中。 目前 POST 是以这种方式实现的,但我不确定这是否是处理具有动态结构的对象的正确方法
Post["/api/docs"] = _ =>
{
//looking for better solution
var json = Request.Body.AsString();
var item = BsonDocument.Parse(json);
database.GetCollection("docs").Insert(item);
return new Response { StatusCode = HttpStatusCode.Created };
};
但无法为 GET 方法找到好的解决方案
Get["/api/docs"] = _ =>
{
//looking for solution
};
您认为这种情况的最佳解决方案是什么?
【问题讨论】:
-
您想如何查询文档?您要查询哪个字段?
-
我想取回按属性(例如名称)过滤的文档列表或按 _id 过滤的单个文档
-
您如何知道要过滤的属性?查询字符串?
-
我需要在 JSON 对象的顶层添加一个 Category 属性。然后我将按类别过滤,例如
Get["/api/docs/:category"]
标签: c# mongodb-.net-driver nancy