- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我正在尝试查找符合我的条件的社区 - boundries
多边形与帖子的坐标相交,但我无法做到 - 无法使用 let
in我的 管道 $match
帖子实体示例:
{
_id: ObjectId,
...,
location: {
...,
coordinates: {
type: 'Point',
coordinates: [number, number]
}
}
};
社区实体示例:
{
_id: ObjectId,
...,
boundries: {
type: 'Polygon',
coordinates: [ [ [number, number], [number, number], [number, number], [number, number], [number, number] ] ]
}
};
我正在尝试“修复”的查询示例:
db.posts.aggregate([
{ $match: { _id: ObjectId('5a562e62100338001218dffa') } },
{
$lookup: {
from: 'neighborhoods',
let: { postCoordinates: '$location.coordinates.coordinates' },
pipeline: [
{
$match: {
boundries: {
$geoIntersects: {
$geometry: {
type: 'Point',
coordinates: '$$postCoordinates'
}
}
}
}
}
],
as: 'neighborhoods'
}
}
]);
最佳答案
很遗憾,无法从文档字段中填充坐标。
地理空间是查询表达式和$let
变量只允许在 $match
中使用与 $expr
$lookup
中聚合表达式的变体管道。
您必须分两步执行查询。
第一步获取匹配记录的坐标。
var result = db.posts.findOne({ _id: ObjectId('5a562e62100338001218dffa')},{ _id: 0, 'location':1});
第二步在多边形中寻找点。
db.neighborhoods.find(
{
"boundries": {
$geoIntersects: {
$geometry: {
type: "Point" ,
coordinates: result.location.coordinates.coordinates
}
}
}
}
)
关于mongodb - 使用 let 变量的管道和 geoIntersect 查找,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52206619/
我有一个集合,其属性为“place”,如下所示。 "place" : { "name" : "Central Region", "country" : "Country_A",
我从金奈和类加罗尔城市的谷歌地图中手动获取坐标并插入到我的数据库中。对于类加罗尔市,$geoIntersect 工作得很好。然而,出于某种原因,对于钦奈市,它没有出现。我不确定我在哪里/错过了什么。在
我有一个名为 search2 的集合,其中包含大约 20000 个这样的文档: { "loc": { "type": "Polygon", "c
我有一个 Mongo 集合,我正在尝试对其执行 $geoIntersects 查询。 mongo中的数据格式为: { "_id" : ObjectId, "created_at" :
mongoDB 中的$geoWithin 和$geoIntersects 运算符有什么区别? 如果我正在寻找坐标(使用默认坐标引用系统),$geoWithin 和 $geoIntersects 将返回
我有一个 MongoDB 数据库,其中包含一个名为 fooCollection 的集合。该集合中包含以边界多边形方式包含地理空间数据的文档。我在我的应用程序中使用 C# MongoDB 驱动程序。我注
我有一个包含文档的集合,每个文档都有一个带有多边形的字段数组。 我想测试我的多边形是否与这些多边形中的任何一个相交。如果有帮助的话,它们都是盒子形状的。 如果您添加将我的多边形包含在我正在测试的数组中
我在一个集合中有事件,每个事件都包含一个所需的位置,设置一个 GeoJSON 多边形。 我在另一个集合中也有服务提供商,也有一个 GeoJSON 多边形,指示他们可以交付的区域。 对于给定的服务提供商
我在 2dsphere 索引集合中插入一个点,并试图在多边形中找到它: c = db.foo; c.ensureIndex({'value.geometry': '2dsphere'}); c.ins
我正在使用 Sinatra 和 mongoid 驱动程序,现在我正在尝试在 mongoid 中执行此查询,实际上我有一个名为 'geometry 的地理空间(多边形)字段': db.states.fi
我正在尝试查找符合我的条件的社区 - boundries 多边形与帖子的坐标相交,但我无法做到 - 无法使用 let in我的 管道 $match 帖子实体示例: { _id: ObjectId,
我想查询所有包含一个点的多边形的文档,然后针对该结果集,根据该点与文档位置的接近程度对其进行排序。 想象一下,我有一个 friend 数据库,因为我很酷,想看看哪些 friend 在我的范围内并且愿意
我有一个使用 MongoDb 的 Java 应用程序(客户端版本 3.12)。Filters.geoIntersects 从 Java 应用程序不返回任何内容从 Robo 3T 查询相同的数据时会返回
我是一名优秀的程序员,十分优秀!