mongodb按距离远近和创建时间两个字段排序
时间: 2024-03-19 11:44:19 浏览: 207
在 MongoDB 中,按照距离远近和创建时间两个字段排序,可以使用 MongoDB 的聚合管道(Aggregation Pipeline)来实现。
假设我们有一个名为 `locations` 的集合,其中每个文档包含一个经纬度坐标和创建时间。现在我们要按照某个给定的经纬度坐标的距离远近和创建时间对文档进行排序,可以按照以下步骤进行操作:
1. 使用 `$geoNear` 聚合操作符计算每个文档到给定坐标的距离,并将距离信息添加到每个文档中。假设我们要计算到经度为 100,纬度为 20 的坐标的距离,可以使用以下代码:
```
db.locations.aggregate([
{
$geoNear: {
near: { type: "Point", coordinates: [ 100, 20 ] },
distanceField: "distance",
includeLocs: "location",
spherical: true
}
}
])
```
2. 使用 `$sort` 操作符按照距离和创建时间进行排序。假设我们要先按照距离从近到远排序,再按照创建时间从新到旧排序,可以使用以下代码:
```
db.locations.aggregate([
{
$geoNear: {
near: { type: "Point", coordinates: [ 100, 20 ] },
distanceField: "distance",
includeLocs: "location",
spherical: true
}
},
{
$sort: {
distance: 1,
createdAt: -1
}
}
])
```
这样就可以实现按照距离远近和创建时间两个字段排序的功能了。
阅读全文