Microsoft Azure文檔BadRequestException已針對非範圍索引的路徑指定了無效查詢。考慮在請求中添加允許掃描標題。DocumentDB - 無法在查詢中比較兩條路徑
我的查詢是:
SELECT c.id FROM users c WHERE (c.lat < 29.89)
OVER?文件號碼(因爲沒有辦法讓收集與DocumentDB的文件數)
Microsoft Azure文檔BadRequestException已針對非範圍索引的路徑指定了無效查詢。考慮在請求中添加允許掃描標題。DocumentDB - 無法在查詢中比較兩條路徑
我的查詢是:
SELECT c.id FROM users c WHERE (c.lat < 29.89)
OVER?文件號碼(因爲沒有辦法讓收集與DocumentDB的文件數)
如果你看一下博客帖子在這裏: http://azure.microsoft.com/blog/2015/01/27/performance-tips-for-azure-documentdb-part-2/
索引策略提示#3:指定範圍索引路徑鍵入所有路徑 用於範圍查詢
DocumentDB當前支持兩種索引路徑類型:散列和範圍。 選擇哈希的索引路徑類型可啓用高效的相等性 查詢。選擇範圍的指標類型允許範圍查詢(使用
>, <, >=, <=)
。
它給出了C#爲例,添加一系列指數,使路徑相媲美,但在node.js library.
當類似的功能您創建一個集合,可以通過人體參數傳遞IndexingPolicy該IndexingPolicy
有幾個成員。其中之一是IncludedPaths,在這裏你可以定義索引。
var policy = {
Automatic: true,
IndexingMode: 'Lazy',
IncludedPaths: [
{
IndexType: "Range",
Path: "path to be indexed (c.lat)",
NempericPrecission: "1",
StringPrecission: "1"
}
],
ExcludedPaths: []
}
client.createCollection(
'#yourdblink',
{
id: 10001,
indexingPolicy: policy
});
如何從NodeJs請求中選擇Range的索引類型? – user2402622 2015-02-09 23:54:04
您在指定索引策略時會這樣做。這必須在代碼中完成,它不能在管理門戶中完成。 – 2015-02-10 07:09:57
添加到我的答案。 – 2015-02-10 15:36:26
可以在(DocumentDB資源) - >設置 - >索引策略下的新Azure門戶(https://portal.azure.com)中更改策略。
這是如何相關(甚至更少,答案)? – 2016-11-26 12:40:31
@ivan_pozdeev:它幫助我! – 2017-07-16 16:37:40
你能發表一個你正在查詢的數據樣本嗎?我猜的用戶.lat不是可比的。你確定他們不是字符串嗎? – 2015-02-09 21:16:41
{ 「LAT」:-65.6583190150559, 「LON」:-74.98864685185254, 「時代」:45.79291892424226, 「貓」:32, 「ID」: 「f6a82cae-8f57-a9a4-d741-6c9054b2c4ec」 } – user2402622 2015-02-09 22:45:56
不是範圍索引?也許我應該添加特殊選項?我使用nodejs require('documentdb')。DocumentClient,選項:{masterKey:{authKey}} – user2402622 2015-02-09 22:46:44