couchdb中的映射和减少查询

couchdb中的映射和减少查询,couchdb,Couchdb,我是编写couchdb映射和减少查询的新手。我的一个要求是基于我们必须发出数据的一些键。正如下面提到的,我成功地写了这篇文章 function(doc) { emit([doc.type , doc.category, doc.user], doc); } 如果我们给出三个关键值,比如 http://localhost:5984/test/_design/myDesign/_view/myView?key=["Science","A","John"] 然后,数据将被发出。 但我的疑问是,

我是编写couchdb映射和减少查询的新手。我的一个要求是基于我们必须发出数据的一些键。正如下面提到的,我成功地写了这篇文章

function(doc) {
emit([doc.type , doc.category, doc.user], doc);
}

如果我们给出三个关键值,比如

 http://localhost:5984/test/_design/myDesign/_view/myView?key=["Science","A","John"] 
然后,数据将被发出。 但我的疑问是,如果我们为该视图提供一个或两个键,我如何获得数据。这意味着对于上面的视图,如果用户提到doc.user这样的一个键,那么用户数据将基于这三个键发出。还有一个疑问是,我们能给一个键两个值吗?假设用户希望通过使用相同的视图获取数据,用户名为JOHN或Joe。请为实现这一目标提供指导


谢谢。

您可以通过以下方式更改视图:

emit([doc.user, doc.type, doc.category], doc);
然后要求

?startkey=["someName"]&endkey=["someName",{}] 
然后在结果列表中是所有具有doc.user=“someName”的文档,无论其类型和类别如何

如果您需要更具体的信息,您可以在通话中添加其他条件:

?startkey=["someName","someType"]&endkey=["someName","someType",{}] 
然后您将收到所有带有someName和someType的文档

但您必须使用相同的顺序(键字段必须从左到右填充)

如果需要另一个顺序(仅查找类型),则必须在同一个函数(或另一个函数)中使用另一个顺序执行第二次发射

只有在给定孔键的情况下,才能同时请求两个键。然后你必须调用一个带有body的视图py POST


{keys=[[“科学”,“A”,“约翰”],[“科学”,“A”,“乔”]}

您可以通过以下方式更改您的视图:

emit([doc.user, doc.type, doc.category], doc);
然后要求

?startkey=["someName"]&endkey=["someName",{}] 
然后在结果列表中是所有具有doc.user=“someName”的文档,无论其类型和类别如何

如果您需要更具体的信息,您可以在通话中添加其他条件:

?startkey=["someName","someType"]&endkey=["someName","someType",{}] 
然后您将收到所有带有someName和someType的文档

但您必须使用相同的顺序(键字段必须从左到右填充)

如果需要另一个顺序(仅查找类型),则必须在同一个函数(或另一个函数)中使用另一个顺序执行第二次发射

只有在给定孔键的情况下,才能同时请求两个键。然后你必须调用一个带有body的视图py POST


{keys=[[“Science”、“A”、“John”]、[“Science”、“A”、“Joe”]}

感谢您的回复,{keys=[[“Science”、“A”、“John”]、[“Science”、“A”、“Joe”]}但它不起作用,请您提供一次访问同一视图的两个值的语法,并在
keys
周围加引号。有关更多详细信息,请参阅。感谢您的回复,{keys=[[“Science”,“A”,“John”],[“Science”,“A”,“Joe”]}但它不起作用,您能否提供一次访问同一视图的两个值的语法请尝试在
键周围加引号。有关更多详细信息,请参阅。