我在couchdb中有一些文件,其中包含不同关联文档的id数组字段:
{
associatedAssets: ["4c67f6241f4a0efb7dc2abc24a004dfe", "270fd4508a1222a1e2a27cbe7f002d9z"]
}
Run Code Online (Sandbox Code Playgroud)
我想写一个视图,让我传入一个本身就是一个id数组的键,然后返回其associatedAssets字段包含一个或多个通过键数组传入的id的文档,例如
$.ajax({
url: "/db/_design/design_doc/_view/summaryByAssociatedAssets",
type: "post",
data: JSON.stringify({keys: ["4c67f6241f4a0efb7dc2abc24a004dfe", "6c67f6241f4a0efb7dc2abc24a004dfd"]}),
dataType: "json",
contentType: "application/json",
})
.done(function(resp){
console.log(resp[0]);
});
Run Code Online (Sandbox Code Playgroud)
将返回其associatedAssets数组包含一个或多个键"4c67f6241f4a0efb7dc2abc24a004dfe","6c67f6241f4a0efb7dc2abc24a004dfd"的文档.
我无法在我的视图中访问密钥,所以我不确定我是否可以这样做?有没有更好的方法来实现这一目标?
谢谢!
sma*_*thy 11
您的视图只需要为每个associatedAssets元素生成一个输出行,如下所示:
function(doc) {
if( doc.associatedAssets ) {
for( var i=0, l=doc.associatedAssets.length; i<l; i++) {
emit( doc.associatedAssets[i], doc );
}
}
}
Run Code Online (Sandbox Code Playgroud)
然后,您需要调整调用,以便最终将该keys数组作为查询字符串参数传递,该参数将仅返回视图中与该数组中的键匹配的行.
总而言之 - 假设最近的CouchDB版本,最好的做法是替换doc你emit的{ _id: doc._id },然后include_docs=true在你的查询中使用,这样你的视图索引就不会被完整的文档填满(不必要).
| 归档时间: |
|
| 查看次数: |
5078 次 |
| 最近记录: |