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 +(テキスト検索 または 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
        });
    });
    


    1. MongoDB、Java、最初の配列エントリで並べ替え

    2. ノード/redisとコールバックの制御フローの問題?

    3. マングースによるバッチ更新

    4. C#10genおよびmongo:インターフェースとしてのメンバーの逆シリアル化