我正在使用以下map函数来获取与组“链接”的用户文档:
function(doc) {
var i, id;
if(doc.type == 'group' && !doc.deletedAt) {
for (i = 0; i < doc.users.length; ++i) {
id = doc.users[i];
emit(doc._id, {'_id': id});
}
emit(doc._id, null);
}
}
一组如下:
{
"_id": "3979684300c58a4c90c7c6e0d6033dce",
"_rev": "90-283daf6cb4edfd838a50121e3364f4cb",
"type": "group",
"name": "test",
"description": "test",
"users": [
"544f4718732b51506d9de60a4e000505",
"63de6351a30879ee091b248c930a9254",
"5684612479ba328ba2575c60e800adee"
],
... other fields
}
用户看起来像:
{
"_id": "8f87c698f119044890c5e788cd0028c1",
"_rev": "5-441da938e50fb692da55d74231f614c2",
"empId": "",
"type": "user",
"disabled": false,
"username": "fred",
"firstName": "Fred",
"lastName": "Jones",
...other fields
}
map函数有效,但我需要过滤掉具有'deletedAt'属性集的用户文档。这在地图功能中是否可行?
答案 0 :(得分:2)
如果不更改文档结构,则无法执行此操作。您应该在用户文档中存储一组组,而不是在组文档中存储用户数组。然后你的地图功能可能如下所示:
function(doc {
var i;
if(doc.type == 'user' && !doc.deletedAt) {
for (i = 0; i < doc.groups.length; ++i) {
emit(doc.groups[i], null);
}
}
}