我只想创建一个使用Map-Reduce的View来执行此操作:假设我有汽车行业的文档。我希望用户查询特定的Make - 例如福特。我希望用户通过EditText,Tap a Button和" Count"来提供Ford值。在TextView中显示。因此,为了澄清,我想使用Map-Reduce计算某种类型的Document。我已经搜索了超过100个小时,并没有找到一个单一的例子 - 我的意思是真实的例子。 (我已阅读所有文档,只有通用示例 - 没有实际示例) 我是一名经验丰富的程序员,年龄超过15岁 - 我只需要一个例子,我很高兴。 有人可以帮我这个吗? 谢谢, 唐
答案 0 :(得分:1)
Here is my Actual Code:
string lMS = "MS:5"; // just to show what type of value I am using
var msCount = dbase.GetView ("count_ms");
msCount.SetMapReduce ((doc, emit) => {
if (doc.ContainsKey ("DT") && doc["DT"].Equals ("P")) {
if (doc.ContainsKey ("MS") && doc["MS"].Equals (_ms))
{
emit (doc ["id"], 1);
}
}
},
(keys, values, rereduce) => values.ToList().Count, "1");
var mscView = dbase.GetView ("count_ms");
var query = mscView.CreateQuery ();
query.StartKey = "MS:1";
query.EndKey = "MS:9999";
var queryResults = query.Run ();
var nr = queryResults.Count; // shows a value of 1 - wrong - should be 40
// the line below is to allow me to put a stop statement to read line above
var dummyForStop = nr;
答案 1 :(得分:0)
尝试设置类似
的内容 var docsByMakeCount = _database.GetView("docs_by_make_count");
docsByMakeCount.SetMapReduce((doc, emit) =>
{
if (doc.ContainsKey("Make"))
{
emit(doc["Make"], doc);
}
},
(keys, values, rereduce) => values.ToList().Count
, "1");
创建视图时。
当你使用它时:
var docsByMake = _database.GetView("docs_by_make_count");
var query = docsByCity.CreateQuery();
query.StartKey = Make;
query.EndKey = Make;
var queryResults = query.Run();
MessageBox.Show(string.Format("{0} documents has been retrieved for that query", queryResults.Count));
if (queryResults.Count == 0) return;
var documents = queryResults.Select(result => JsonConvert.SerializeObject(result.Value, Formatting.Indented)).ToArray();
var commaSeperaterdDocs = "[" + string.Join(",", documents) + "]";
DocumentText = commaSeperaterdDocs;
在我的案例中,Make和DocumentText是属性。
这里有一些优化,比如减少,但这是直截了当的。