Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

o couchdb pode fazer loops


Acho que entendi o que você está perguntando. A resposta é bem direta com Map/Reduce.

Digamos que você tenha os seguintes documentos de pessoas:
{
   "name": "Person A",
   "interests" [ "computers", "fishing", "sports" ]
}
{
   "name": "Person B",
   "interests" [ "computers", "gaming" ]
}
{
   "name": "Person C",
   "interests" [ "hiking", "sports" ]
}
{
   "name": "Person D",
   "interests" [ "gaming" ]
}

Você provavelmente gostaria de emitir sua chave como interesse, com o valor como o nome da pessoa (ou _id ).
function (doc) {
   for (var x = 0, len = doc.interests.length; x < len; x++) {
      emit(doc.interests[x], doc..name);
   }
}

Os resultados da sua visualização ficariam assim:
  • computadores => Pessoa A
  • computadores => Pessoa B
  • pesca => Pessoa A
  • jogos => Pessoa B
  • jogos => Pessoa D
  • caminhada => Pessoa C
  • esportes => Pessoa A
  • esportes => Pessoa C

Para obter uma lista de pessoas com interesse em computadores, basta enviar key="computers" como parte da string de consulta.

Se você quiser adicionar uma função de redução ao seu mapa, você pode simplesmente usar _count (atalho para usar uma função de redução compilada) e você pode recuperar uma contagem de todas as pessoas com um interesse específico, você pode até usar isso para limitar quais interesses você consulta para construir seus relacionamentos.