如何从 MongoDB 中的另一个集合中查找多边形内的文档?

问题描述 投票:0回答:0

我有一个 MongoDB

collection A
有几百个这样的文档:

{
    "_id" : ObjectId("6439bfc481c8ad39798d1009"),
    "citi_id" : "place_qedaw2132",
    "geometry" : {
        "type" : "Point",
        "coordinates" : [
            -79.8922549,
            34.0013755
        ]
    },
    "record_timestamp" : "2013-03-06T12:41:48-05:00"
}

我有另一个 MongoDB

collection B
有 1 个这样的文档,其中
polygon_coord
包含一个大小为 302 个元素的数组:

{
    "_id" : null,
    "polygon_coord" : [
        [
            -79.8895483,
            34.0467802
        ],
        [
            -79.9060312,
            34.0183378
        ],
        .......300 more elements
    ]
}

我的目标是找到

collection A
的所有文档(城市),这些文档(城市)在
polygon_coord
中的
collection B
的多边形坐标内。

我试过以下方法: 我手动复制了 302 个元素的数组,并创建了一个这样的查询:

db.getCollection("collection_A").find(
  {
     geometry: {
       $geoWithin: { $polygon: [ 
           
        [
            -79.8895483,
            34.0467802
        ],
        [
            -79.9060312,
            34.0183378
        ],
        .......300 more elements
        
           
      ] }
     }
  }
)

成功了!它给了我正确的结果。但是,这是手动的。我研究了很多,发现我必须使用 $lookup 运算符,但无论我尝试什么,我都无法形成任何查询。请帮忙。

mongodb mongodb-query aggregation-framework mongo-shell
© www.soinside.com 2019 - 2024. All rights reserved.