2017-10-11 7 views
1

J'ai un problème qui persiste pendant quelques jours et je n'arrive pas à le résoudre.Cloudant: Aucun index n'existe pour ce type, essayez d'indexer les champs de tri

J'ai un document simple dans ma base de données qui ressemble à ceci:

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

Lorsque je tente de faire une sorte par la position, même si je l'ai créé un index pour ce champ, je reçois toujours la même erreur:

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

Voici l'index:

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

Et voici ma requête qui provoque cette erreur:

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

Résultat: Aucun index existe pour ce type, essayez l'indexation par les champs de tri.

Veuillez AIDE! Merci à l'avance

Répondre

2

Si vous voulez trier la position essayez cette requête:

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

Le champ position doit faire partie du sélecteur. Je l'ai mis pour correspondre à toute position qui est> = 0, donc il devrait correspondre à tout sauf si c'est nul.

De plus, vous étiez en train de trier par _id puis position. Cela rendrait le tri position sans signification. J'ai supprimé le champ _id du tri.

+0

Merci beaucoup, @markwatsonatx. Cela a résolu mon problème. J'ai aussi inclus la position dans le sélecteur mais je n'ai pas supprimé _id, donc probablement que ça m'a aussi jeté une erreur .. – Alin