2 Stimmen

CouchDB View liefert leere Zeilen mit Complex Key für Date Array Vergleich

Ich habe eine Ansicht namens "report_data_by_date", die im Wesentlichen dies ist:

function(doc)
{
  if (doc.report_completed_timestamp)
  {
    emit(doc.report_completed_timestamp, doc);
  }
}

die in etwa Folgendes aussendet:

{
        "id": "eade1035fb3dc87baba8bdf64b043c2c",
        "key": [
            2011,
            11,
            9,
            14,
            1,
            26,
            305
        ],
        "value": { /*the doc*/}
}

Und wenn ich die Ansicht abfrage, etwa so:

http://.../_design/ReportMetaData/_view/report_data_by_date

Ich erhalte die erwarteten Ergebnisse zurück.

Wenn ich jedoch versuche, mit einem Schlüssel abzufragen (um nur bestimmte Daten abzugleichen), wie dies (aber richtig URL-codiert):

http://.../_design/ReportMetaData/_view/report_data_by_date?key=[2011,{},{},{},{},{},{}]

Ich bekomme etwa Folgendes zurück:

{"total_rows":16,"offset":16,"rows":[]}

Wobei rows ein leeres Array ist. Ich erwarte, dass ich die Zeilen zurückbekomme, die das Jahr 2011 enthalten.

Ich habe das Gefühl, dass ich etwas sehr Triviales übersehe, aber trotz meiner Suche kann ich keine Antwort finden.

Vielen Dank für Ihre Hilfe!

7voto

Ryan Ramage Punkte 2556

Der Grund dafür, dass es nicht zurückkommt, ist, dass Sie wahrscheinlich keine genau Schlüssel von: [2011,{},{},{},{},{},{},{}] in Ihren Daten. Der Schlüssel-Parameter für Ihre Ansicht gibt nur exakte Übereinstimmungen zurück.

Wenn Sie alle Schlüssel im Jahr 2011 haben wollen, sollten Sie eine Starttaste und und und Endtaste . Ich habe Ihre genaue Abfrage nicht getestet, aber sie wird wahrscheinlich in etwa so aussehen:

report_data_by_date?startkey=[2011]&endkey=[2011,{},{},{},{},{},{}]

1voto

Chris Punkte 3298

Ich denke, was Ihnen helfen wird, ist die Verwendung der Abfrageparameter Starttaste y Endtaste .

Ich habe eine Testdatenbank mit den folgenden zwei Dokumenten gefüllt,

{"_id":"7bb98a75-99aa-481c-9de4-68b682f63068","_rev":"1-db9e34f664de295c76de4c8049b1de50","report_completed_timestamp":[2011,11,9,14,1,26,305]},
{"_id":"f4453fd3-dc3a-47b4-91a9-b28cc092513c","_rev":"1-4c9e78f384ef64700262c6ec148e8fff","report_completed_timestamp":[2012,1,1,0,0,0]}

Wenn ich Ihre Ansicht mit der Funktion Schlüssel Parameter in Ihrem Beispiel, erhalte ich keine Ergebnisse, da es kein Dokument mit einem report_completed_timestamp Feld mit diesem Wert. Um die Dokumente für 2011 zu erhalten, gehen Sie wie folgt vor:

http://.../ReportMetaData/_design/test/_view/report_data_by_date?startkey=[2011]&endkey=[2011,12,31,11,59,999]

Dies führte zu dem von Ihnen gewünschten Ergebnis:

{"total_rows":2,"offset":0,"rows":[
{"id":"7bb98a75-99aa-481c-9de4-68b682f63068","key":[2011,11,9,14,1,26,305],"value":{"_id":"7bb98a75-99aa-481c-9de4-68b682f63068","_rev":"1-db9e34f664de295c76de4c8049b1de50","report_completed_timestamp":[2011,11,9,14,1,26,305]}}

]}

Weitere Informationen finden Sie im Apache-Wiki: http://wiki.apache.org/couchdb/HTTP_view_API#Querying_Options

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X