MongoDB按日期查询并按距离排序(Mongoose + Express App)

时间:2017-10-11 14:05:59

标签: javascript mongodb express mongoose

我正在构建一个事件应用程序,并希望在某个特定日期获取所有事件,然后按位置对我进行排序。如何实现这样的请求?这就是Schema的样子:

var eventSchema = mongoose.Schema({
_id: {
    type: String,
    required: true
},
name: {
    type: String,
    required: true
},
start_time: {
    type: Date
},
location: {
    type: {
        type: String
    },
    coordinates: []
},
});

我知道我可以使用$ near查询位置,我已设法让它运行。但我想首先查询“start_time”,然后根据他们与我的距离按照该日期的事件进行排序。任何建议将非常感谢,谢谢;)

2 个答案:

答案 0 :(得分:2)

使用$geoNear agg管道运算符。它会按照您指定的点的顺序返回文档。您可以告诉$geoNear使用调用中的start_time选项进一步限制查找到您的query(或任意查询表达式)。详细信息: https://docs.mongodb.com/manual/reference/operator/aggregation/geoNear/

答案 1 :(得分:1)

我设法让它使用此查询:

{
    location: {
        $near : {
        $geometry: { type: "Point",  coordinates: [longitude,latitude] 
        },
        $maxDistance: 10000
        }
    },
    $and: [
        { start_time : {$gte: now, $lt: tomorrow} }
    ]
}