- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 Mongoose 和带有 maxDistance 的近查询来过滤靠近给定 gps 位置的元素。但是,near 查询会覆盖其他排序。我想要的是在给定点的 maxDistance 内找到所有元素,然后按其他一些属性排序。
这是我目前正在做的一个例子:
架构:
mongoose.Schema({
name: {
type: String,
required: true
},
score: {
type: Number,
required: true,
default: 0
},
location: {
type: {
type: String,
default: 'Point',
},
coordinates: {
type: [Number]
}
},
....
});
model.find({
"location.coordinates": {
"$near": {
"$maxDistance": 1000,
"$geometry": {
"type": "Point",
"coordinates": [
10,
10
]
}
}
}
}).sort('-score');
最佳答案
在查找查询中,您需要使用 location
而不是 location.coordinates
.
router.get("/test", async (req, res) => {
const lat = 59.9165591;
const lng = 10.7881978;
const maxDistanceInMeters = 1000;
const result = await model
.find({
location: {
$near: {
$geometry: {
type: "Point",
coordinates: [lng, lat],
},
$maxDistance: maxDistanceInMeters,
},
},
})
.sort("-score");
res.send(result);
});
db.collection.createIndex( { "location" : "2dsphere" } )
$near sorts documents by distance. If you also include a sort() for the query, sort() re-orders the matching documents, effectively overriding the sort operation already performed by $near. When using sort() with geospatial queries, consider using $geoWithin operator, which does not sort documents, instead of $near.
router.get("/test", async (req, res) => {
const lat = 59.9165591;
const lng = 10.7881978;
const distanceInKilometer = 1;
const radius = distanceInKilometer / 6378.1;
const result = await model
.find({
location: { $geoWithin: { $centerSphere: [[lng, lat], radius] } },
})
.sort("-score");
res.send(result);
});
[
{
"location": {
"type": "Point",
"coordinates": [
10.7741692,
59.9262198
]
},
"score": 50,
"_id": "5ea9d4391e468428c8e8f505",
"name": "Name1"
},
{
"location": {
"type": "Point",
"coordinates": [
10.7736078,
59.9246991
]
},
"score": 70,
"_id": "5ea9d45c1e468428c8e8f506",
"name": "Name2"
},
{
"location": {
"type": "Point",
"coordinates": [
10.7635027,
59.9297932
]
},
"score": 30,
"_id": "5ea9d47b1e468428c8e8f507",
"name": "Name3"
},
{
"location": {
"type": "Point",
"coordinates": [
10.7635027,
59.9297932
]
},
"score": 40,
"_id": "5ea9d4971e468428c8e8f508",
"name": "Name4"
},
{
"location": {
"type": "Point",
"coordinates": [
10.7768093,
59.9287668
]
},
"score": 90,
"_id": "5ea9d4bd1e468428c8e8f509",
"name": "Name5"
},
{
"location": {
"type": "Point",
"coordinates": [
10.795769,
59.9190384
]
},
"score": 60,
"_id": "5ea9d4e71e468428c8e8f50a",
"name": "Name6"
},
{
"location": {
"type": "Point",
"coordinates": [
10.1715157,
59.741873
]
},
"score": 110,
"_id": "5ea9d7d216bdf8336094aa92",
"name": "Name7"
}
]
[
{
"location": {
"type": "Point",
"coordinates": [
10.7768093,
59.9287668
]
},
"score": 90,
"_id": "5ea9d4bd1e468428c8e8f509",
"name": "Name5"
},
{
"location": {
"type": "Point",
"coordinates": [
10.7736078,
59.9246991
]
},
"score": 70,
"_id": "5ea9d45c1e468428c8e8f506",
"name": "Name2"
},
{
"location": {
"type": "Point",
"coordinates": [
10.795769,
59.9190384
]
},
"score": 60,
"_id": "5ea9d4e71e468428c8e8f50a",
"name": "Name6"
},
{
"location": {
"type": "Point",
"coordinates": [
10.7741692,
59.9262198
]
},
"score": 50,
"_id": "5ea9d4391e468428c8e8f505",
"name": "Name1"
}
]
关于mongodb - Mongoose Geo Near Search - 如何在给定距离内排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61343311/
我正在尝试按照以下方式根据教程使用 Bio.Geo 解析 GEO 文件: from Bio import Geo handle = open('GSE40603_combined_L1_L2.txt'
我在 Geo::Coder::US 工作和 Geo::Coder::US::Import .他们说我需要导入数据库,他们的示例没有显示如何执行此操作,至少对于现在可行的方式。 Geo::Coder::
我目前正在使用 C++ GEOS API 迭代 typedef Points(x 和 y 成员变量)的 vector。 我通过创建一个 geos::geom::Geometry 对象,在 0 处缓冲以
我正在使用 feedparser 来解析 XML 文件。但我无法解析 , 使用该文件中的 feedparser 进行标记!你们知道我如何在 python 中使用 feedparser 解析这些标签吗
我有一个 geojson 文档,我想对其执行一些 GEOS 转换,例如:计算交点、从另一个多边形中减去多边形等。 我已经能够创建 geo_types::Polygon来自文档,但无法将其转换为 GEO
我在 Ubuntu 14.04 LTS 上运行 Django 1.8 和 Python 3.4。就在最近,我的 Django 应用一直在报告 GEOS 不存在。 GEOS 已安装并且 libgeos_
Android 是否支持地理围栏,如果是,那么最早支持地理围栏功能的平台是什么。 最佳答案 在您提出问题时没有支持,但 Google 刚刚发布了该功能作为 Google IO 2013 的一部分: h
我创建了一个应用程序,可以向您发送某个位置的纬度/经度,我想知道是否有一种统一的方式通过文本消息发送它,这样 Android 或 iPhone 可能允许用户单击它并打开它 map 中的位置。 是的,A
我正在运行此查询 SELECT country, countries.code, countries.lat, countries.lng, countries.zoom, worldip.start
以下是我用于在距给定纬度/经度坐标的给定距离内定位教区的 SQL: SELECT record_id as parish_id, parish, church, ( 3959 * acos( cos(
我正在考虑使用 GEO 提醒的应用程序(在 iOS5 中添加的应用程序,当我离开/到达时在某个位置提醒我)。但我需要使用此功能(实际上,仅使用位置)来获取当前位置并将其与我的应用程序定义的位置进行比较
我想弄清楚如何在 geo.lua 中实际调用 GEOMETRYFILTER 函数,因为文档对我来说不是很清楚: https://github.com/RedisLabs/geo.lua#GEOMETR
我收到这个错误: ImportError: Could not find the GEOS library (tried ""geos_c"", ""libgeos_c-1""). Try sett
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我遵循了几个关于 Redis 中地理空间支持的示例。我尝试毫无问题地向我的 Redis 数据集添加 POINT 特征,随后我可以查询某个坐标(或 POINT 的某个成员)的某个半径(以米、公里、英里为
Flutter geolocator 总是分别给我这个纬度和经度 37.4219983, -122.084,这不是我的真实地址,所以我该如何改进它。 最佳答案 似乎您正在使用模拟器。这是给模拟器的默认
我一直在深入研究将NEST用于将使用ElasticSearch的基于.Net的项目,但是让我感到困惑的是,GeoDistance查询从未返回任何结果。 当调试简单的“*”查询的响应并查看搜索结果的.D
嘿,我正在开发一个应用程序,我需要根据距离过滤器显示所提供的纬度和经度的地点。我正在提供来自 elastic search 的数据。我可以使用 geo_distance 查询轻松地提供数据,以查找具有
当您使用 GEOADD 命令在 Redis 中添加键时,该条目将保存为排序集(类型:zset)。 我的问题是,有没有办法(也许使用Lua?)来确定排序集中的数据是否是“GEO”数据? 最佳答案 由于
映射地址属性:id name type和location。搜索映射: { "address": { "properties": { "id": { "type"
我是一名优秀的程序员,十分优秀!