¿La función "distinta" de Mongoose admite regex en una consulta?
Pregunta
Tengo el siguiente bit de JS en un proyecto de nodo/mangosta. Estoy trabajando en una forma autocompleta. Funciona bien con un "hallazgo" regular, pero quiero hacer un hallazgo "distinto" en su lugar.
Así que aquí es donde estoy hasta ahora. El problema que creo es en la forma en que se forma la consulta. ¿Alguien puede ayudar con mi sintaxis en la línea distinta? ¿O es solo que el "distinto" de Mongoose no admite a Regex en una consulta opcional?
var text.term = 'johnny';
var regex = new RegExp("^"+text.term);
// execute the search
Performance.collection.distinct({lc_actor: regex}, function(err, docs) {
var names = [];
for(var nam in docs) {
// push the lc_actor to the array
names.push(docs[nam].lc_actor);
}
// send back via callback function
callback(null, names);
});
Y esto es lo que mi consola de mangostos súper verbosa (-VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV) está mostrando:
Tue Nov 29 13:34:30 [conn1] runQuery called mydb.$cmd { distinct: "performances", query: {}, key: { lc_actor: /^johnny/ } }
Tue Nov 29 13:34:30 [conn1] run command mydb.$cmd { distinct: "performances", query: {}, key: { lc_actor: /^johnny/ } }
Tue Nov 29 13:34:30 [conn1] command mydb.$cmd command: { distinct: "performances", query: {}, key: { lc_actor: /^johnny/ } } ntoreturn:1 reslen:140 526ms
¿Algunas ideas?
Solución
Respondiendo a mi propia pregunta. De hecho, tuve errores de sintaxis en el método distinto de Mongoose. Acepta 3 parámetros, solo tenía 2. La sintaxis correcta con una regex (o cualquier condición) es:
Performance.collection.distinct('lc_actor', {lc_actor: regex}, function(err, docs) {
De Mongoose Docs para Model.Distinct ():
Model.distinct(field, conditions, callback);