2016-05-17 9 views
0

Ich möchte eine Massenabfrage zu cloudant db.Verwenden von '_all_docs? Keys =' Abfrage db und Angabe, welche Felder zurückgegeben werden

Durch die Bereitstellung einer Liste von _id s (Primärschlüssel), und haben db alle Dokumente mit übereinstimmenden _id s zurückgeben.

Dies funktioniert wie folgt. Aber ich möchte auch _id, _rev und field_name zurückgeben. Gibt es eine Möglichkeit, dies zu tun, ohne include_docs=true zu verwenden?

Anfrage:

http://{db-host}/{db-name}/_all_docs?keys=["1e0a2d30d18d95b9bcc05d92c8736eab","181687d2f16debc10f9e365cc4002371"] 

Antwort:

{ 
    "total_rows": 3, 
    "rows": [{ 
    "id": "1e0a2d30d18d95b9bcc05d92c8736eab", 
    "key": "1e0a2d30d18d95b9bcc05d92c8736eab", 
    "value": { 
     "rev": "1-a26b67f478e4f3f8fd49779a66fc7949" 
    } 
    }, { 
    "id": "181687d2f16debc10f9e365cc4002371", 
    "key": "181687d2f16debc10f9e365cc4002371", 
    "value": { 
     "rev": "1-7338901ca1c5c06ef81a6971aa6e8f9d" 
    } 
    }] 
} 
+0

Sie haben bereits 'id' und' rev'. – OrangeDog

+0

Ich möchte 'field_name' auch. – bobbyrne01

Antwort

2

Nr Der Index der _all_docs enthält nicht die field_name Daten. Die einzige Möglichkeit, diese Ansicht zu verwenden, ist include_docs.

Andernfalls müssen Sie Ihre eigene Ansicht schreiben (und indexieren), die aussendet, was Sie wollen.

map: function(doc) { 
    emit(doc._id, { _id: doc._id, _rev: doc._rev, field_name: doc.field_name }); 
} 
0

Eine Alternative zur Verwendung include_docs oder manuell alle Felder bevölkern ist docs als Werte in einer Ansicht zu emittieren, wie folgt aus:

emit(doc._id, doc); 
+0

Zitiert in der Dokumentation: „Es ist nicht das Dokument selbst in der Ansicht zu emittieren empfohlen Stattdessen die Leichen der Dokumente aufzunehmen, wenn die Ansicht anfordert, fordern Sie die Ansicht mit include_docs = true.?.“ – Gnujeremie