适用于JSON阵列的CouchDB视图

时间:2014-12-05 12:56:53

标签: java couchdb couchdb-futon

我有一个以下类型的json对象:

{
    "contentClass": "Class",
    "owner": "Rambo",
    "links": {
        "Vehicle": "aaaaa", "Vehicle2":"bbbbb"
    },
    "Date": {
        "extendedTypeName": "Date and time",
        "type": "DATE",
        "name": "Date",
        "defaultValue": null,
        "value": "2013-08-09T08:07:00.000Z",
        "position": 2,
        "attributeName": "Date"
    }   
}

所以要通过匹配日期和其中一个链接字段(vehicle或vehicle1)来获取所有记录,我创建了以下视图:

function(doc) {
    if(doc.contentClass == 'Class') { 
        if(doc.links) {
            for (var linkedTo in doc.links) {
                emit([doc.Date.value, doc.links[linkedTo]], null);          
            }
        }
    }
}

在我交换emit函数中的值之前,此函数无效:

emit([doc.links[linkedTo], doc.Date.value ], null);

有谁能告诉我这个的原因。还有更好的观点。 提前谢谢。

1 个答案:

答案 0 :(得分:0)

使用emit()时,第一个参数表示索引的键。 如果使用startKey和endKey调用视图,则这两个值应与索引键(相同顺序)匹配。

例如

[doc.links[linkedTo], doc.Date.value ]

是索引键,因此你的startKey和endKey应该始终使用相同的格式(linkedTo首先跟着日期)。

此外,如果您使用降序参数进行查询,请不要忘记反转startKey和endKey。