2014-09-01 4 views
0

Pour activer un index unique dans le nœud que je fais:MongoDB plusieurs indices par champ

City.native(function(err, collection) { 
    collection.ensureIndex({ 
     'name': 1, 
    }, function(err, result) { 
     //nothing 
    }); 
}); 

Mais je voudrais permettre à l'index de texte sur le nom aussi. Donc, après avoir fait ce qui précède, je fais:

City.native(function(err, collection) { 
    collection.ensureIndex({ 
     'name': 'text' 
    }, function(err, result) { 
     //nothing 
    }); 
}); 

Ceci crée parfaitement les deux indices. Ma question est, y at-il une chance de fusionner ce code ?? J'ai essayé avec

City.native(function(err, collection) { 
    collection.ensureIndex({ 
     'name': 1, 
     'name': 'text' 
    }, function(err, result) { 
     //nothing 
    }); 
}); 

mais cela crée juste l'index de texte.

+1

vouloir créer deux index. cela nécessite d'exécuter deux commandes create index. –

Répondre

1

Pour activer un index unique dans le nœud que vous devez faire:

City.native(function(err, collection) { 
    collection.ensureIndex(
     {'name': 1}, 
     {unique:true}, 
     function(err, result) { 
     //nothing 
    }); 
}); 

Maintenant, pour fusionner ce code: (Si personne ne commande est spécifié pour l'index alors il est de l'ordre ascendant)

City.native(function(err, collection) { 
    collection.ensureIndex(
     {'name': 'text'}, 
     {unique:true}, 
     function(err, result) { 
     //nothing 
    }); 
}); 
vous
+0

N'est-ce pas censé être '.ensureIndex ({name: 'text'}, {unique: vrai}, fonction (err, résultat) {... rien ...})'? – lascort

+0

oui @lascort ... édité le poste, j'avais raté les accolades, merci. – vmr

+0

maintenant votre EnsureIndex est "over-curly-braced": P – lascort

Questions connexes