Mysql
 sql >> Datenbank >  >> RDS >> Mysql

kann couchdb loops machen

Ich glaube, ich verstehe, was Sie fragen. Die Antwort ist ziemlich einfach mit Map/Reduce.

Angenommen, Sie haben die folgenden Personendokumente:

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

Wahrscheinlich möchten Sie Ihren Schlüssel als Interesse ausgeben, mit dem Wert als Name der Person (oder _id ).

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

Ihre Ansichtsergebnisse würden so aussehen:

  • Computer => Person A
  • Computer => Person B
  • Fischen => Person A
  • Spielen => Person B
  • Spielen => Person D
  • Wandern => Person C
  • Sport => Person A
  • Sport => Person C

Um eine Liste von Personen zu erhalten, die sich für Computer interessieren, können Sie einfach key="computers" senden als Teil der Abfragezeichenfolge.

Wenn Sie Ihrer Karte eine Reduzierungsfunktion hinzufügen möchten, können Sie einfach _count verwenden (Verknüpfung zur Verwendung einer kompilierten Reduzierungsfunktion) und Sie können eine Zählung aller Personen mit einem bestimmten Interesse abrufen. Sie können dies sogar verwenden, um die Interessen einzuschränken, die Sie zum Aufbau Ihrer Beziehungen abfragen.