我正在构建一个事件应用程序,并希望在某个特定日期获取所有事件,然后按位置对我进行排序。如何实现这样的请求?这就是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”,然后根据他们与我的距离按照该日期的事件进行排序。任何建议将非常感谢,谢谢;)
答案 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} }
]
}