我正在使用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