我有一個用node.js mongodb和mongoose實現的地理數據api。 我想用兩個條件查詢我的數據。將geoNear查詢與另一個查詢值相結合
首先,我使用geoNear獲取給定半徑內的所有位置,這很好地工作。 第二我想要進一步按類型過濾位置。
這是我的架構:
var GeoLocationSchema = new Schema({
name: String,
type: String,
loc: {
type: {
type: String,
required: true,
enum: ["Point", "LineString", "Polygon"],
default: "Point"
},
coordinates: [Number]
}
});
// ensure the geo location uses 2dsphere
GeoLocationSchema.index({ loc : "2dsphere" });
,這是我geoNear查詢:
router.route("/locations/near/:lng/:lat/:type/:max")
// get locations near the get params
.get(function(req, res) {
// setup geoJson for query
var geoJson = {};
geoJson.type = "Point";
geoJson.coordinates = [parseFloat(req.params.lng), parseFloat(req.params.lat)];
// setup options for query
var options = {};
options.spherical = true;
options.maxDistance = parseInt(req.params.max)/6370000;
// query db with mongoose geoNear wrapper
GeoLocation.geoNear(geoJson, options, function (err, results, stats) {
if (err)
res.send(err);
res.json(results);
});
});
是它在某種程度上可以將geoNear查詢與查詢合併爲特定類型的位置或可我以某種方式過濾結果?
在此先感謝。
使用'$ geoNear'聚集階段作爲管道的第一階段。您可以使用'$ match'階段等進一步設置條件/操作。 – wdberkeley 2014-08-31 15:07:57