【发布时间】:2018-11-07 11:08:59
【问题描述】:
我的 Azure Cosmos DB 中有以下文档:
{
"id": "token",
"User": {
"UserToken": "token",
"Email": "test@email.com"
},
"_ts": 1541493290
}
当我运行以下查询时:
SELECT * FROM root
WHERE ((root["User"]["UserToken"] = "token")
OR CONTAINS(root["User"]["Email"], "token"))
ORDER BY root["_ts"] DESC
没有返回任何内容。但是当我稍微改变一下。例如通过将Email 转换为email:
SELECT * FROM root
WHERE ((root["User"]["UserToken"] = "token")
OR CONTAINS(root["User"]["email"], "token"))
ORDER BY root["_ts"] DESC
结果找到了。此外,当我删除 ORDER BY 子句时,查询也会返回一个结果。所以查询如下
SELECT * FROM root
WHERE ((root["User"]["UserToken"] = "token")
OR CONTAINS(root["User"]["Email"], "token"))
此外,当我编辑文档时(比如打开它,添加一个空行并保存),后台会发生一些神奇的事情并找到文档。对于相当“新”的文档(不到 1-3 个月),我可以不用我的“魔法”技巧来搜索它们。
索引定义为:
{
"indexingMode": "consistent",
"automatic": true,
"includedPaths": [
{
"path": "/*",
"indexes": [
{
"kind": "Range",
"dataType": "Number",
"precision": -1
},
{
"kind": "Hash",
"dataType": "String",
"precision": 3
}
]
}
],
"excludedPaths": []
}
我做错了什么?
UPDATE 答案不是一个完整的解释,但它有很大帮助。完整的解释在我的博客 (https://stapp.space/ridiculous-bug-in-azure-cosmos-db/)
【问题讨论】:
标签: azure azure-cosmosdb