2015-09-11 2 views
1

В моей облачной базе данных у меня есть такие объекты. Я хотел бы запросить объекты, основанные на свойствах в вложенном массиве.Запрос Cloudant/CouchDB по содержанию вложенного массива

В примере ниже, как я запрашиваю для всех объектов, где есть голосование с userId == "user1"? Запрос должен возвращать оба объекта. Когда я ищу userId «user2», он должен вернуть первый, поскольку второй объект голосовал только от user1 и user4.

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

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

ответ

0

Это представление будет возвращать список всех голосов (где голосование является идентификатор пользователя и _id) сортируются по USERID, только получить user1 использовать? Ключ = "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"} 
]} 
Смежные вопросы