在 couchbase 视图中过滤数据
Filter data in couchbase View
当我将 couchbase 中的视图写入 return 整个文档时,它还会 return _sync":{} 数据,有什么方法可以从响应中删除这些数据。
这是我的视图函数:-
function map(doc, meta) {
if (doc.type == 'user' && doc.user_id) {
emit(doc.user_id, doc);
}
}
首先,您永远不必发出整个文档。这使得磁盘上的索引更大,而且它是冗余的,因为您可以轻松地从视图行中获取整个文档(始终包含文档 ID,并且 SDK 通常会透明地为您获取它)。
但在您的情况下,您实际上可能需要发射的第二部分。 Select 您感兴趣的属性并将它们发送到一个数组中(如 emit(doc.user_id, [doc.attributeA, doc.attributeB])
),因此实际上 "filtering out" _sync
.
唯一的问题是,如果稍后您向用户添加 attributeC
,它不会自动包含在内(因此它会过滤掉地图函数中未明确列出的属性)。这有意义吗?
当我将 couchbase 中的视图写入 return 整个文档时,它还会 return _sync":{} 数据,有什么方法可以从响应中删除这些数据。
这是我的视图函数:-
function map(doc, meta) {
if (doc.type == 'user' && doc.user_id) {
emit(doc.user_id, doc);
}
}
首先,您永远不必发出整个文档。这使得磁盘上的索引更大,而且它是冗余的,因为您可以轻松地从视图行中获取整个文档(始终包含文档 ID,并且 SDK 通常会透明地为您获取它)。
但在您的情况下,您实际上可能需要发射的第二部分。 Select 您感兴趣的属性并将它们发送到一个数组中(如 emit(doc.user_id, [doc.attributeA, doc.attributeB])
),因此实际上 "filtering out" _sync
.
唯一的问题是,如果稍后您向用户添加 attributeC
,它不会自动包含在内(因此它会过滤掉地图函数中未明确列出的属性)。这有意义吗?