我正在使用mongoose for MongoDB開發Express API。在下面的代碼中,我試圖找到距離特定距離內的GeoJson對象,對它們進行排序,以便最先出現的對象首先出現,然後在返回「限制」中指定數量的對象之前跳到某個文檔。如何解決MongooseJS排序和跳過
// Find all of the stacks in a given radius
router.param("range", function(req, res, next, range) {
if(range === "1") {
var radius = 8125; // Meters. (5 Miles)
} else if(range === "0") {
var radius = 45.75; // Meters. (150 Feet)
}
var skipTo = parseInt(req.params.skip);
var origin = [parseFloat(req.params.lon), parseFloat(req.params.lat)]; // [longitude, latitude]
var userLocation = { type: "Point", coordinates: origin };
var options = { maxDistance: radius,
spherical : true,
sort: {
createdAt: -1 // Sort by Date Added DESC
},
skip: skipTo, // Skip to a specific point
limit: 15 // How many returned
};
Stack.geoNear(userLocation, options, function(err, result, stats) {
if(err) return next(err);
if(!result) {
err = new Error("Not Found");
err.status = 404;
return next(err);
}
req.locals = result;
next();
});
});
當我運行代碼時,geoNear()函數與限制函數完全一樣工作。我的問題是排序和跳過。這幾乎就像忽略了排序和跳過一樣。我在網上查看了mongo和mongoose文檔以及類似的代碼,我無法在任何地方找到修復程序。我怎樣才能做到這一點,以便當我試圖獲取某個區域的文檔時,我的結果會被正確跳過並按日期組織?
可能重複http://stackoverflow.com/q/24297556/3284355 – Molda
@Molda我想他正試圖做一個貓鼬的查詢,而不是聚集。 http://mongoosejs.com/docs/api.html#model_Model.geoNear – dyouberg
@dyouberg在問題中,我把他們說跳過在geoNear中不支持,可以使用聚合。我不太熟悉貓鼬,所以我可能是錯的。 – Molda