To use this mongoDB functionality you need to call directly your mongoDB.
So , use this to connect in the mongoDB :
var db = MongoInternals.defaultRemoteCollectionDriver().mongo.db;
Example :
In this example I’m using the aggregate role to calculate the distance of places stored in the database returning the 5 closest.
var longitude = "informed longitude"; var latitude = "informed latitude"; var db = MongoInternals.defaultRemoteCollectionDriver().mongo.db; var pipeline =[ { $geoNear: { near: { type: "Point", coordinates: [longitude,latitude ]}, distanceField: "dist.calculated", num: 5, includeLocs: "dist.location", spherical: true, sort: { distanceField :1 } } } ]; db.collection("place").aggregate( pipeline, Meteor.bindEnvironment( function(err, result){ totalItems = result.length; // here you have the result console.log("totalItems" + totalItems); } ) );
Each place stored in the database has his latitude and longitude . In this example, the coordinates must be stored as follows to work properly:
loc: { type: "Point", coordinates: [longitude, latitude] }
You need to store in this way to use aggregate function to do this and is required to apply a geoNear index in your database.
db.collection.createIndex( { <location field> : “2dsphere” } )
To see more ( geoNear documentation ) :
http://docs.mongodb.org/manual/reference/operator/aggregation/geoNear/
Reblogged this on Dinesh Ram Kali..
LikeLike
Thanks.
We use: https://github.com/meteorhacks/meteor-aggregate
LikeLike