J'essaie de trouver des enregistrements dans ma base de données mongoDB en fonction des valeurs des informations de latitude et de longitude enregistrées. Je veux appliquer la fonction suivante avec une découverte sur ma collection:Rechercher des enregistrements mongodb (dans mongoose + node.JS) basés sur une condition
exports.findDistance = findDistance(latitude, longitude) {
console.log('calculating with lat = ' + latitude + ' and longitude = ' + longitude);
var radian = 0.0174532925;
var x = Math.pow(Math.sin((latitude - this.latitude) * radian/2), 2);
var y = Math.cos(latitude - radian) * Math.cos(this.latitude - radian);
var z = Math.pow(Math.sin((longitude - this.longitude) * radian/2), 2);
var result = 2*3956*Math.asin(Math.sqrt(x + y * z));
return result < 10;
}
Cette fonction retourne true lorsque mon résultat calculé est inférieur à 10 (j'utilise la latitude et la longitude de ma base de données, référencé par le « ce » objet et les deux paramètres). Comment puis-je obtenir tous les messages de mongoDB qui s'appliquent à cette fonction?
J'ai essayé ce qui suit:
exports.index = function(req, res) {
var latitude = value1;
var longitude = value2;
Message.find(Message.findDistance, [], function(err, msgs) {
// render the page
});
}
Cependant, ma fonction findDistance ne semble pas être appelé par la fonction mangouste trouver (pas de sortie vu dans ma console développeur et je reçois juste tous les résultats renvoyés par ma collection mongoDB). Aussi, comment puis-je passer les paramètres de latitude et de longitude à la fonction findDistance?
Mon message schéma se présente comme suit:
Message = new Schema({
text: { type: String, required: true },
parent: String,
user: ObjectId,
latitude: Number,
longitude: Number,
date: { type: Date, default: Date.now }
});
quelqu'un peut me aider? :)