2017-11-01 8 views
0

私は予定のコレクションを持っています。私は今に最も近い予定を照会できるようにする必要があります。Cosmos DBタイムスタンプが最も近いドキュメントを照会

ドキュメントDB /コスモスDBで可能ですか?

私の最初の考えは1509562136は「今」である。この

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はメモリ占有量(スケール)が低く設計されているため、クエリによる注文はインデックスからのみ提供されます。したがって、式のソートは許可されません。

関連する問題