CouchDB固定类别查询

时间:2011-07-14 08:30:24

标签: couchdb mapreduce

我的CouchDB中有这样的文档:

{
  "_id": "0cb35be3cc73d6859c303fa3200011d2",
  "_rev": "1-f6e356bbf6ab09290aae11132af50d66",
  "adresse": "Bohrgaß 10 /",
  "plz": 56814,
  "ort": "Faid /",
  "kw": 2.32,
  "traeger": "SOL"
  ...
}

某些属性有预定义的类别,例如traeger:“SOL”,“BIO”,“WAS”; kw:< 2,2-5,5-20,20-100; plz:56814,plz:56815; ......

我必须能够有效地查询每个类别的文档总数 在特定条件下的文档总数和文档本身。例如。

  1. 在traeger =“SOL”条件下,类别kw< 2(以及所有其他kw类别)中有多少个文档
  2. 在条件plz = 56814 AND kw<条件下,类别traeger =“SOL”(以及所有其他traeger类别)中有多少个文档。 2
  3. 用户可以选择他喜欢组合的类别。类别是修复。还会有更多属性和类别。

    如何映射/缩小函数看起来像?

    马塞尔

1 个答案:

答案 0 :(得分:3)

由于您要计算文档,因此reduce函数只是built-in count。您的地图功能需要发出用户要搜索的相应密钥。最后,在查询视图时,必须选择适当的组级别。

示例:您可以使用复合键[“traeger”,“kw”]创建视图。如果使用group_level = 2查询该视图,则会获得每个traeger和kw组合的文档数。

如果您只关心传感器“SOL”,则可以使用start_key和end_key参数限制输出。

如果您想知道每个“traeger”类别中的文档数量,无论其“kw”如何,您都可以使用group_level 1查询该视图。

对于您的第二个示例,您可以使用键[“plz”,“kw”,“traeger”]创建一个视图,并使用start_key和end_key查询它以将结果限制为plz = 56814 AND kw< 2并将group_level设置为3。

此处列出查询视图选项:

http://wiki.apache.org/couchdb/HTTP_view_API#Querying_Options