Mysql
 sql >> Database >  >> RDS >> Mysql

può couchdb fare loop

Penso di aver capito quello che chiedi. La risposta è piuttosto semplice con Map/Reduce.

Supponi di avere i seguenti documenti di persone:

{
   "name": "Person A",
   "interests" [ "computers", "fishing", "sports" ]
}
{
   "name": "Person B",
   "interests" [ "computers", "gaming" ]
}
{
   "name": "Person C",
   "interests" [ "hiking", "sports" ]
}
{
   "name": "Person D",
   "interests" [ "gaming" ]
}

Probabilmente vorresti emettere la tua chiave come interesse, con il valore come nome della persona (o _id ).

function (doc) {
   for (var x = 0, len = doc.interests.length; x < len; x++) {
      emit(doc.interests[x], doc..name);
   }
}

I risultati della tua visualizzazione sarebbero simili a questo:

  • computer => Persona A
  • computer => Persona B
  • pesca => Persona A
  • gioco => Persona B
  • gioco => Persona D
  • escursionismo => Persona C
  • sport => Persona A
  • sport => Persona C

Per ottenere un elenco di persone con computer come interesse, puoi semplicemente inviare key="computers" come parte della stringa di query.

Se vuoi aggiungere una funzione di riduzione alla tua mappa, puoi semplicemente usare _count (scorciatoia per utilizzare una funzione di riduzione compilata) e puoi recuperare un conteggio di tutte le persone con un interesse particolare, puoi persino usarlo per limitare gli interessi a cui interroghi per costruire le tue relazioni.