Estamos utilizando la base de datos Mongo para insertar datos relacionados con trabajos. Quiero obtener el recuento según las coordenadas de ubicación GEO con búsqueda de texto en los campos de título y descripción.
Supongamos que tenemos registros
id title coordinates[0] coordinates[1] --+-----------------------+---------------------+---------------- 1 PHP developer | 97.77 | -92.99 2 Laravel developer,php | 97.77 | -92.99 3 python | 97.77 | -92.99 4 Rails | 23.77 | -34.99 5 Python, php | 23.77 | -34.23Búsqueda de usuario con "PHP" (título), coordenadas de latitud-longitud y específica con una distancia de 50 millas, si la distancia llegó en los primeros 3 registros id [1,2,3] y el título PHP apareció en los primeros dos registros id [1,2 ] entonces el usuario obtendrá el resultado como un conteo 2. ¿Cómo podemos hacer una consulta para esto en la base de datos mongo o en la consulta del controlador de la base de datos PHP mongo? Vamos a adjuntar nuestra estructura de base de datos como una imagen. Si tiene alguna consulta háganoslo saber. Gracias por adelantado.
En Mongodb/Driver/Query se puede usar así
$queryString = [ [ '$geoNear'=> [ 'near'=> [ 'type'=> "Point", 'coordinates'=> [-73.86, 41.07 ] ], 'distanceField'=> "dist.calculated", 'maxDistance'=> '5000', 'includeLocs'=> "dist.location", 'num'=> 10000, 'spherical'=> true, 'query' => ['title'=> ['$regex' => 'sales' ]] ] ], ['$unwind'=> '$loc'], ['$group'=>['_id'=> '$loc', 'count'=>['$sum'=>1]]], ['$project'=>['res'=>['loc'=>'$_id', 'count'=>'$count']]], ['$group'=>['_id'=>null, 'total'=>['$sum'=>1], 'data'=>['$addToSet'=>'$res']]], ]; $conn = new \MongoDB\Driver\Manager("mongodb://username:password@localhost:2702/admin"); $command = new \MongoDB\Driver\Command([ 'aggregate' => 'collection_name', 'pipeline' => $queryString ]); $result = $conn->executeCommand('mongodbname', $command);Prueba esto:
db.crawled_jobs.aggregate([{ "$geoNear": {"near": { "type": "Point", "coordinates": [ -73.86, 41.07 ] },"spherical": true,"maxDistance": 500000, "distanceField": "distance","query": {"title": /php/}}}])mira este sardar ji:
db.hotels.find({ "$texto": { "$buscar": "prueba" }, "ubicación": { "$geoDentro": { "$centerSphere": [[ 72.867804, 19.076033 ], 5000 ] } } })