也许我不是第一个提出这个问题的人,但我还没有找到这个问题的答案。 我创建了一个发出多个键的视图:
ParametersByTestCase.SetMap(
(doc, emit) =>
{
if (!doc[“Type”].ToString().Equals(TestCaseModel.TYPE)) return;
var keys = new List<object>
{
doc["_id"],
doc[“TestDefId”]
};
emit(keys, doc[“Params”]);
},
“1.0”);
现在我想查询某个键,但我没有得到任何结果。从论坛上我找到了这个解决方案:
var key = new List { testDefId };
var keys = new List<object> { key };
query.Keys = keys;
query.Run();
总是不返回结果(键肯定在索引中)。
我发现的另一种方法是:
query.StartKey = new List<object> { testDefId };
query.EndKey = new List<object> { testDefId, new Dictionary<string, object>() };
query.Run();
这也行不通......我做错了什么?
Ty&amp; BR 汉纳斯
答案 0 :(得分:1)
您是否尝试过无钥匙或(开始键和结束键)以确定您是否成为某种东西?
Ps:根据整理原则,使用start endkey的查询无法正常工作,因为liste的第一个元素应该是doc._id,否则响应将为空。
https://wiki.apache.org/couchdb/View_collation
对于密钥查询,您有相同的pb。第一个应该是doc._id 问题是你声明了一个像这个新的List(){&#34; a&#34;,&#34; b&#34;}所以在键中你应该写一些像这样的新List(){new List (){&#34; a&#34;,&#34; b&#34;}}}。 键是2个元素的列表,应该是键列表(列表)
var view = database.GetView("spongbob");
view.SetMap((doc, emit) =>
{
if (doc["Type"] == "spongbob")
{
emit(new object[]{ doc["_id"],doc["strength"] }, doc);
}
}, "1.0");