我只想创建一个使用Map-Reduce的视图来做这件事:假设我有汽车行业的文档。我希望用户查询特定的制造商-例如福特。我想用户提供的福特通过一个EditText的价值,点击一个按钮,并在TextView中显示“计数”。因此,为了清楚起见,我想使用Map-Reduce对特定类型的文档进行计数。我已经为此搜索了100多个小时,但没有找到一个例子--我是说真正的例子。(我已经阅读了所有的文档,只有通用的例子-没有实际的例子)我是一个经验丰富的程序员15+ yrs exp -所有我需要的是一个例子,我很好去。有没有人能帮我一下?谢谢,唐
发布于 2016-01-06 01:51:00
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; 发布于 2016-01-05 15:29:35
尝试设置如下内容
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是属性。
这里需要做一些优化,比如重新简化,但这是直接的方法。
https://stackoverflow.com/questions/34597633
复制相似问题