2017-11-01 11 views
0

저는 약속 모음을 가지고 있습니다. 지금 가장 가까운 약속을 쿼리 할 수 ​​있어야합니다.Cosmos DB 가장 가까운 타임 스탬프가 포함 된 문서를 쿼리하십시오.

Document DB/Cosmos DB에서 가능합니까?

내 초기 생각은 1,509,562,136는 "지금"이다이

SELECT * FROM c ORDER BY ABS(c.ScheduledTime - 1509562136) 

처럼 ABS 및 주문에 의해, 그래서 뭔가를 사용하는 것이 었습니다, 그러나 코스모스에 의한 순서로 그 표현을 좋아하지 않는다. 이 작업을 수행하기 위해

답변

1

, 당신은

SELECT * FROM c WHERE c.ScheduledTime BETWEEN 1509562136 - 60 AND 1509562136 + 60 
SELECT * FROM c WHERE c.ScheduledTime BETWEEN 1509562136 - 120 AND 1509562136 + 120 
SELECT * FROM c WHERE c.ScheduledTime BETWEEN 1509562136 - 240 AND 1509562136 + 240 
... 

같은 진보적 인 쿼리를 수행 한 다음 가장 가까운 약속을 찾을 때까지 로컬 쿼리의 결과를 정렬해야합니다. 매우 유사한 구현이지만 지형 공간 질의에 대해서는 https://github.com/arramac/azure-documentdb-dotnet/blob/master/samples/Spatial/NearestNeighbor/Spatial/SpatialHelper.cs을 참조하십시오.

Cosmos DB는 메모리 풋 프린트 (저울)가 적기 때문에 쿼리 순서는 인덱스에서만 제공됩니다. 따라서 식에 대한 정렬을 허용하지 않습니다.