Bản thân Mongo DB không hỗ trợ đồng thời tìm kiếm văn bản và địa lý. Tham khảo phần này
Nhưng bạn có thể kết hợp truy vấn và có thể đạt được kết quả
Giải pháp
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
})
-
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 + ( Tìm kiếm văn bản Hoặc regex )
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
});
});