0

我在浏览 kinvey (BAAS) 文档时遇到了使用 Map/reduce 的聚合概念。

http://docs.kinvey.com/rest-aggregation.html

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

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

如果有人能对此有所了解,我将不胜感激。

谢谢拉胡尔

4

1 回答 1

1

您想向 发送 POST 请求/appdata/:appKey/:collectionName/_group,其中 :appkey 是应用程序 ID, :collectionName 是您要在其上运行聚合的特定集合。

然后在正文中,您要指定 map/reduce 参数:

{
  "key": {
    "lastName":true
  },
  "initial": {
    "count": 0
  },
  "reduce": "function(doc,out){ out.count++;}",
  "condition": {
    "age": { "$gt":31 }
  }
}

在此示例中,“ key”指定将被聚合的实体列名称。大多数时候你只想做一个,但你可以指定多个。" initial" 种子减少起始值,因为这是一个计数示例,它从零开始。“ reduce”是一个javascript函数;它传入实体 ( doc) 和我们的返回对象 ( out)。如果你想总结每个人的年龄而不是人数,它会像:out.count += doc.age. 最后你可以指定一个可选的“ condition”;这是一个使用查询语言的过滤器,只有满足条件的实体才会被评估。

作为参考,这里是 MongoDB 聚合文档。您应该能够在那里列出的所有内容http://www.mongodb.org/display/DOCS/Aggregation

查询语法的 Kinvey 文档:http://docs.kinvey.com/rest-filtering.html 请记住,这是 body 对象中条件的一部分,而不是 POST uri)。

如果您需要它,这里有一个关于将字典转换为 JSON 的问题。如何在 C# 中将字典转换为 JSON 字符串?

于 2012-09-15T14:25:52.433 回答