Cloudant/CouchDB 按嵌套数组的内容查询

Cloudant/CouchDB query by content of nested array

在我的 cloudant 数据库中,我有这样的对象。我想查询基于嵌套数组中的属性的对象。

在下面的示例中,如何查询所有投票对象为 userId=="user1" 的对象?查询应该 return 这两个对象。当我搜索 userId "user2" 时,它应该 return 第一个,因为第二个对象只有 user1 和 user4 的投票。

{
    "_id": "1",
    "votes": [
        {
            "userId": "user1",
            "comment": ""
        },
        {
            "userId": "user2",
            "comment": ""
        },
        {
            "userId": "user3",
            "comment": ""
        }
    ]
}

{
    "_id": "2",
    "votes": [
        {
            "userId": "user1",
            "comment": ""
        },
        {
            "userId": "user4",
            "comment": ""
        }
    ]
}

此视图将 return 按 userId 排序的所有投票列表(其中投票是 userId 和 _id),仅让 user1 使用 ?key="user1"

function(doc) {
  for(i in doc.votes)
    emit(doc.votes[i].userId, doc._id);
}

/dbName/_design/foo/_view/bar?key="user1"

{"total_rows":5,"offset":0,"rows":[
{"id":"1","key":"user1","value":"1"},
{"id":"2","key":"user1","value":"2"}
]}