MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

MongoDB:Комбинирайте текстово търсене и геопространствена заявка

Самата Mongo DB не поддържа текстово и географско търсене едновременно.Вижте това

Но можете да комбинирате заявката и да постигнете резултата

Решения

  1. regex + близо до
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
}) 
  1. Текстово търсене + regex

    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})
    
  2. Mapreduce + ( Текстово търсене Или регекс )

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
    });
});


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. CouchDB/Couchbase/MongoDB емулация на транзакция?

  2. Монго групиране и натискане:бутане на всички полета

  3. Mongoose findById() в обект от вложени схеми/поддокументи - агрегиране

  4. Добавяне на дъщерен документ към съществуващ документ на mongodb

  5. C# MongoDB - Как да добавяте и премахвате елемент към множество вложени елементи на масив?