带有几何位置的cosmos db嵌套查询

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

我不知道如何选择。

{
    "inserted": "2022-11-22T17:40:40.0303547Z",
    "packagekey": "b53b8bfb-68b7-4ad1-aacb-b5868d4b4657",
    "ismoved": true,
    "geometry": {
        "type": "Point",
        "coordinates": [
            16.788592,
            54.454656
        ]
    },
    "id": "659b284c-febe-4428-bda7-9a356e9a7b3b",
    "partionkey": "b53b8bfb-68b7-4ad1-aacb-b5868d4b4657",
    "key": "9455c529-8acb-41d0-b543-9fe59b187a25",
    "type": "Feature",
    "properties": {
        "ProductKey": "00000000-0000-0000-0000-000000000000",
        "ProductName": "",
        "LogicalInventoryKey": "00000000-0000-0000-0000-000000000000",
        "LogicalInventoryName": "",
        "WorkOrderKey": "00000000-0000-0000-0000-000000000000",
        "WorkOrderItemKey": "00000000-0000-0000-0000-000000000000",
        "IsMoved": false
    }
}

我有很多这样的对象,

packagekey
表示一个包裹,
geometry
是一个位置。每个包裹有 1 个或多个位置。

如何选择某个位置上的所有包(每个包都有一个包密钥)我使用类似的地方

where ST_DISTANCE(c.geometry, {'type':'Point', 'coordinates':[16.788592, 54.454656]}) <= 1

但我想要所有具有最新位置的包裹,并且最高插入日期是最新的。

azure-cosmosdb azure-cosmosdb-sqlapi
1个回答
0
投票

经验不多,但请告诉我结果?

SELECT TOP 1 * FROM c
WHERE c.inserted = (SELECT MAX(c2.inserted) FROM c c2)
ORDER BY c.inserted DESC

这里c代表集合中文档的别名。我们使用 TOP 1 子句仅检索最新的包,然后插入的属性等于集合中的最大插入值。结果是按降序插入的。

© www.soinside.com 2019 - 2024. All rights reserved.