Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mongodb-在嵌套JSON对象中查找GeoNear_Json_Mongodb_Geolocation_Mongodb Query - Fatal编程技术网

Mongodb-在嵌套JSON对象中查找GeoNear

Mongodb-在嵌套JSON对象中查找GeoNear,json,mongodb,geolocation,mongodb-query,Json,Mongodb,Geolocation,Mongodb Query,我需要使用此数据结构获取某个点附近最近的位置: [ { "data_id": "127", "actual_data": [ { "id": "220", "value": "shaul" }, { "id": "221", "value": "323

我需要使用此数据结构获取某个点附近最近的位置:

    [
    {
        "data_id": "127",
        "actual_data": [
            {
                "id": "220",
                "value": "shaul"
            },
            {
                "id": "221",
                "value": "3234324"
            },
            {
                "id": "222",
                "value": {
                    "lngalt": [
                        13.7572225,
                        -124.0429047
                    ],
                    "street_number": null,
                    "political": null,
                    "country": null,
                }
            },
            {
                "id": "223",
                "value": "dqqqf1222fs3d7ddd77@Dcc11cS2112s.com"
            },
            {
                "id": "224",
                "value": "123123"
            },
            {
                "id": "225",
                "value": "lala1"
            },
....
    },
    {
        "data_id": "133",
        "actual_data": [
            {
                "id": "260",
                "value": {
                    "lngalt": [
                        1.7572225,
                        32.0429047
                    ],
                    "street_number": null,
                    "political": null,
                    "country": null,
                }
            },
            {
                "id": "261",
                "value": -122.25
            }
        ],
    }
]
我使用以下查询来获取所需的内容:

{
    "actual_data": {
        "$elemMatch": {
            "id": "260",
            "value.lngalt": {
                "$near": {
                    "$geometry": {
                        "type": "Point",
                        "coordinates": [
                            -73.9667,
                            40.78
                        ]
                    },
                    "$minDistance": 1000,
                    "$maxDistance": 5000
                }
            }
        }
    }
}
但在查询之后,我得到了“无法规范化查询:BadValue geoNear必须是顶级表达式”(错误代码:17287)。这很奇怪,因为当我在没有$near但只有$elemMatch的情况下进行查询以获得具有特定值的确切对象时,我确实得到了正确的结果

谢谢

解决了

对于将来的重构,我使用$geoinsin代替$near函数。因此,我的查询如下所示:

{
    "actual_data": {
        "$elemMatch": {
            "id": "260",
            "value.lnglat": {
                "$geoWithin": {
                    "$centerSphere": [
                        [
                            -71.07651880000003,
                            42.353068
                        ],
                        0.001
                     ]
                }
            }
        }
    }
}

和平

$elemMatch
不支持嵌套在内部的
$near
。还要注意的是,匹配将针对文档,而不是数组的元素,因此我认为,即使您的查询有效,也不会给出您所期望的结果。您是否试图在文档中的点中找到最近的点?或者,在其各个点中,最接近的文档(与其他文档相比)?我尝试细化包含ID等于260且靠近特定坐标的子对象的整个文档。因此,如果ID不是260,则不会返回。