Moongose ​​.geoNear agrégation, ajouter des options de requête de base

J'utilise la bibliothèque de Mongoose avec Node.js et la fonction d'agrégation geoNear .

Voici mon code, ça fonctionne comme un charme:

 User.geoNear({ type: "Point", coordinates: [geo.lon, geo.lat] }, { spherical: true, maxDistance: 50, }, function(err, results, stats) { if (err) { // handle err } } 

Maintenant, j'aimerais ajouter des options de requêtes de base, telles que l'exclusion des documents avec l'option mongodb $nin . Par exemple, je voudrais rechercher des utilisateurs autour d'une position donnée (comme je l'ai fait dans mon exemple) mais avec une contrainte de ne pas correspondre à certains ids donnés. Comment pourrait-il être possible d'ajouter ce type d'options à ma requête?

Vous pouvez faire avec le cadre d'agrégation. Essayer:

 db.collection.aggregate( [ { '$geoNear': { 'near': { 'type': 'Point', 'coordinates': [ -77.395410 , 38.967995 ] }, 'spherical': true, 'distanceField': 'dist', 'maxDistance': 5000 } }, { $match:{_id:{$nin: [ObjectId("5716163704ca42c7b579c7e3")]}} } ]); 

La requête ci-dessus recherchera tous les documents avec un rayon de 5000 mètres et exclura un document avec _id donné.