2017-10-11 1 views
1

Ich habe ein Problem, das für ein paar Tage andauert und ich kann es nicht lösen.Cloudant: Es existiert kein Index für diese Art. Versuchen Sie, durch die Sortierfelder zu indexieren

Ich habe ein einfaches Dokument in meiner Datenbank, die wie folgt aussieht:

{ 
    "_id": "asd123", 
    "_rev": "revidasd123", 
    "type": "CUSTOM_TYPE", 
    "position": 8, 
    "title": "Short custom title" 
} 

Wenn ich von Position versuchen, um eine Art, auch wenn ich geschaffen habe einen Index für dieses Feld, habe ich immer der gleiche Fehler:

Error: no_usable_index. Reason: No index exists for this sort, try indexing by the sort fields.

Hier ist der Index:

{ 
"type": "json", 
"def": { 
    "fields": [ 
    { 
    "position": "asc" 
    } 
    ] 
} 
} 

Und hier ist meine Frage, die diesen Fehler verursachen:

{ 
    "selector": { 
    "type": "CUSTOM_TYPE", 
    "_id":{ 
     "$gt": null 
    } 
    }, 
    "fields": [ 
    "_id", 
    "type", 
    "position" 
    ], 
    "sort": [ 
    { 
     "_id": "asc" 
    }, 
    { 
     "position": "asc" 
    } 
    ] 
} 

Ergebnis: kein Index für diese Art vorhanden ist, versuchen die Indizierung durch die Sortierfelder.

Bitte HILFE! Vielen Dank im Voraus

Antwort

2

Wenn Sie nach Position sortiert werden sollen dann diese Abfrage versuchen:

{ 
    "selector": { 
    "type": "CUSTOM_TYPE", 
    "position": {"$gte": 0} 
    }, 
    "fields": [ 
    "_id", 
    "type", 
    "position" 
    ], 
    "sort": [ 
    { 
     "position": "asc" 
    } 
    ] 
} 

Das position Feld muss einen Teil der Wähler sein. Ich setze es so, dass es zu jeder Position passt, die> = 0 ist, also sollte es mit allen übereinstimmen, es sei denn, es ist null.

Auch Sie sortiert nach _id und dann position. Dies würde die position Art bedeutungslos machen. Ich entfernte das _id Feld von der Sorte.

+0

Vielen Dank, @markwatsonatx. Das hat mein Problem gelöst. Ich habe auch Position im Selektor enthalten, aber ich habe _id nicht entfernt, also hat das wahrscheinlich auch einen Fehler verursacht. – Alin

Verwandte Themen