首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Xamarin.Android Couchbase.Lite映射缩减

Xamarin.Android Couchbase.Lite映射缩减
EN

Stack Overflow用户
提问于 2016-01-05 02:39:32
回答 2查看 80关注 0票数 0

我只想创建一个使用Map-Reduce的视图来做这件事:假设我有汽车行业的文档。我希望用户查询特定的制造商-例如福特。我想用户提供的福特通过一个EditText的价值,点击一个按钮,并在TextView中显示“计数”。因此,为了清楚起见,我想使用Map-Reduce对特定类型的文档进行计数。我已经为此搜索了100多个小时,但没有找到一个例子--我是说真正的例子。(我已经阅读了所有的文档,只有通用的例子-没有实际的例子)我是一个经验丰富的程序员15+ yrs exp -所有我需要的是一个例子,我很好去。有没有人能帮我一下?谢谢,唐

EN

回答 2

Stack Overflow用户

发布于 2016-01-06 01:51:00

代码语言:javascript
复制
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
EN

Stack Overflow用户

发布于 2016-01-05 15:29:35

尝试设置如下内容

代码语言:javascript
复制
        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");

当您创建视图时。

当你使用它的时候:

代码语言:javascript
复制
        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是属性。

这里需要做一些优化,比如重新简化,但这是直接的方法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34597633

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档