sql >> Databáze >  >> NoSQL >> MongoDB

MongoDB:Kombinace textového vyhledávání a geoprostorového dotazu

Mongo DB sama o sobě nepodporuje textové a geografické vyhledávání současně.Přečtěte si toto

Dotaz ale můžete zkombinovat a můžete dosáhnout výsledku

Řešení

  1. regulární výraz + v blízkosti
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. Vyhledávání textu + regulární výraz

    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 + ( Textové vyhledávání Nebo regulární výraz )

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 INCR souběžnost

  2. Jaký je nejúčinnější databázový stroj orientovaný na dokumenty pro ukládání tisíců středně velkých dokumentů?

  3. Nováček nemůže získat JSON

  4. Jak se MongoDB liší od databáze SQL