Tengo este problema, mi consulta se ve así:
public findCitys(city: string) { return City.find( { country: 'AT', $text: { $search: city, }, }, { score: { $meta: 'textScore', }, } ) .sort({ score: { $meta: 'textScore', }, }) .limit(5) }Y mi modelo se ve así:
const citySchema = new mongoose.Schema({ country: { type: String, }, name: { type: String, index: 'text', }, location: { type: String, coordinates: [Number], }, }) Cuando uso la consulta anterior, obtengo el resultado sin el campo de location . ¿Porqué es eso?
Debo señalar aquí que la location tiene un índice de 2dsphere en él
Aquí un ejemplo de salida:
[ { _id: new ObjectId("619217adf9f5ad76d27d387f"), name: 'Vienna', country: 'AT', score: 1.1 } ]Bueno, encontré el problema. Estaba en mi esquema. type es una palabra clave reservada pero la necesito como clave de objeto
const citySchema = new mongoose.Schema({ country: { type: String, }, name: { type: String, index: 'text', }, location: { type: { type: String }, coordinates: [Number], }, })Ahora funciona