entrez la description de l'image ici Nous utilisons la base de données Mongo pour insérer des données liées aux emplois. Je veux obtenir le décompte en fonction des coordonnées de localisation GEO avec une recherche de texte sur les champs de titre et de description.

Supposons que nous ayons des enregistrements

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.23

Recherche utilisateur avec "PHP" (titre), coordonnées latitude-longitude et spécifique avec distance 50 miles, Si la distance est arrivée dans les 3 premiers enregistrements id [1,2,3] et le titre PHP est venu dans les deux premiers enregistrements id [1,2 ] alors l'utilisateur obtiendra le résultat sous forme de nombre 2. Comment pouvons-nous faire une requête pour cela dans la base de données mongo ou la requête du pilote de base de données PHP mongo? Nous allons attacher notre structure de base de données sous forme d'image. Si vous avez des questions, faites-le nous savoir. Merci d'avance.

3
Jaskaran singh Rajal 24 janv. 2017 à 07:58

4 réponses

Meilleure réponse

Dans Mongodb / Driver / Query, il peut être utilisé comme ceci

    $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);
4
Pardeep Goyal 24 janv. 2017 à 13:05

Essaye ça:

db.crawled_jobs.aggregate([{ "$geoNear": {"near": { "type": "Point", "coordinates": [  -73.86,  41.07  ]  },"spherical": true,"maxDistance": 500000,
 "distanceField": "distance","query": {"title": /php/}}}])
0
Rohan Sanap 24 janv. 2017 à 06:37

Je pense que vous avez besoin de ceci:

Db.crawled_jobs.aggregate ([{$ geoNear: {near: {type: "Point", coordonnées: [-73.86, 41.07]}, distanceField: "dist.calculated", maxDistance: 100000, includeLocs: "dist.location" , num: 1225, sphérique: true, "query": {"title": / sales /}}}, {$ unwind: '$ loc'}, {$ group: {_ id: '$ loc', count: { $ sum: 1}}}, {$ project: {res: {loc: '$ _ id', count: '$ count'}}}, {$ group: {_ id: null, total: {$ sum: 1} , données: {$ addToSet: '$ res'}}}])

-1
Jobs 30 janv. 2017 à 06:02

Vérifiez ce sardar ji:

Db.hotels.find ({"$ text": {"$ search": "test"}, "location": {"$ geoWithin": {"$ centerSphere": [[72.867804, 19.076033], 5000]}} })

0
john 24 janv. 2017 à 05:32