Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Kinvey Rest API——使用C#后端的聚合(映射/减少)_C#_Api_Rest_Mapreduce - Fatal编程技术网

Kinvey Rest API——使用C#后端的聚合(映射/减少)

Kinvey Rest API——使用C#后端的聚合(映射/减少),c#,api,rest,mapreduce,C#,Api,Rest,Mapreduce,我在浏览kinvey(BAAS)文档时,发现了使用Map/reduce的聚合概念 由于Kinvey没有.NETSDK,我们唯一的选择就是使用RESTAPI。 我熟悉restapi,但是,根据文档(上面的链接),但是,如何在C#后端代码中的API请求参数中构造Map/Reduce语法 我们要制作的windows Phone应用程序的后端将包含C#代码。我们希望在应用程序中显示两个聚合模块/数据点。我想利用kinvey在MongoDB上运行时提供的Map/reduce功能,而不是使用linq并在代

我在浏览kinvey(BAAS)文档时,发现了使用Map/reduce的聚合概念

由于Kinvey没有.NETSDK,我们唯一的选择就是使用RESTAPI。 我熟悉restapi,但是,根据文档(上面的链接),但是,如何在C#后端代码中的API请求参数中构造Map/Reduce语法

我们要制作的windows Phone应用程序的后端将包含C#代码。我们希望在应用程序中显示两个聚合模块/数据点。我想利用kinvey在MongoDB上运行时提供的Map/reduce功能,而不是使用linq并在代码中进行处理

如果有人能解释一下,我将不胜感激

谢谢
Rahul

您要向
/appdata/:appKey/:collectionName/\u group
发送POST请求,其中:appKey是应用程序id,而:collectionName是要在其上运行聚合的特定集合

然后在主体中,您要指定贴图/减少参数:

{
  "key": {
    "lastName":true
  },
  "initial": {
    "count": 0
  },
  "reduce": "function(doc,out){ out.count++;}",
  "condition": {
    "age": { "$gt":31 }
  }
}
在此示例中,“
”指定将聚合的实体列名。大多数情况下,您只需要执行一个,但可以指定多个。“
initial
”将reduce起始值作为种子,因为这是一个计数示例,所以它从零开始。“
reduce
”是一个javascript函数;它传入实体(
doc
)和返回对象(
out
)。如果您想将每个人的年龄相加,而不是人数相加,那么它应该是:
out.count+=doc.age
。最后,您可以指定一个可选的“
条件”
”;这是一个使用查询语言的过滤器,只有满足条件的实体才会被计算

以下是MongoDB聚合文档,仅供参考。你应该能找到里面列出的所有东西

以及查询语法的Kinvey文档:(请记住,这是body对象中条件的一部分,而不是POST uri中的条件)


如果您需要它,这里有一个关于将Dicitonary转换为JSON的问题

非常感谢您的澄清。只是为了澄清,根据Kinvey文档,它建议,将过滤条件放在POST URI中,因此您认为将过滤与聚合一起放在正文中更好吗。感谢聚合,我建议将过滤器作为主体中的条件参数。