-1

我有以下类型的 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"
    }   
}

因此,要通过匹配日期和链接字段之一(车辆或车辆 1)获取所有记录,我创建了以下视图:

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);

谁能告诉我这是什么原因。对此还有什么更好的看法。提前致谢。

4

1 回答 1

0

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

例如

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

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

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

于 2014-12-19T07:52:25.573 回答