Sama baza danych Mongo nie obsługuje wyszukiwania tekstowego i geograficznego jednocześnie.Odnieś się do tego
Ale możesz połączyć zapytanie i osiągnąć wynik
Rozwiązania
const aggregate=YourCollection.aggregation()
aggregate.near({
near:coord,
includeLocs: "loc",
distanceField: "distance",
maxDistance: distance
});
aggregate.match({name:{$regex:keyword,$options: 'i'}})
aggregate.exec(function(err,yourDocuments){
//your smart code
})
-
Wyszukiwanie tekstowe + wyrażenie regularne
var aggregate=YourCollection.aggregate(); var match= { latitude: { $lt: yourCurrentLatitude+maxDistance, $gt: yourCurrentLatitude-maxDistance }, longitude: { $lt: yourCurrentLongitude+maxDistance, $gt: yourCurrentLongitude-maxDistance }, {$text:{$search:keyword}} }; aggregate.match(match).exec(function(err,yourDocuments){//your smart code})
-
Mapreduce + ( Wyszukiwanie tekstowe Lub wyrażenie regularne )
YourCollection.mapReduce(map, reduce, {out: {inline:1, query : yourFirstQuery}}, function(err, yourNewCollection) {
// Mapreduce returns the temporary collection with the results
collection.find(yourNewQuery, function(err, result) {
//your awsome code
});
});