Javascript 如何使用nodejs sdk在cosmos db中定义正确的索引路径?
我目前在为我的一个cosmosdb容器定义索引策略时遇到了一些问题。我在cosmosdb中有一个容器,用于保存与用户会话相关的数据。我正在使用NodeSDK定义容器、分区键和索引策略。下面是我如何定义会话容器的索引策略和分区键Javascript 如何使用nodejs sdk在cosmos db中定义正确的索引路径?,javascript,node.js,azure,indexing,azure-cosmosdb,Javascript,Node.js,Azure,Indexing,Azure Cosmosdb,我目前在为我的一个cosmosdb容器定义索引策略时遇到了一些问题。我在cosmosdb中有一个容器,用于保存与用户会话相关的数据。我正在使用NodeSDK定义容器、分区键和索引策略。下面是我如何定义会话容器的索引策略和分区键 else if(containerId.includes("sessions")) { indexingPolicy = { includedPaths: [ {"path" : &q
else if(containerId.includes("sessions"))
{
indexingPolicy = {
includedPaths: [ {"path" : "/startTime/"} ]
};
partitionKey = { paths: ["/id"] };
}
当我发出POST请求而容器不存在时,它将根据我在配置文件中定义的策略创建容器。然而,当我试图发布一个新会话时,我会根据索引策略得到各种各样的错误。以下是我到目前为止所做的尝试和所犯的错误
{“path”:“/startTime/”}-->无法接受索引路径“\/startTime\/”,在位置“11”附近失败。请确保路径是有效的路径。常见错误包括无效字符或标签周围缺少引号
{“path”:“/startTime/*”}-->“任何路径类型集中都没有提供特殊的强制索引路径\“\/\”。请在其中一个集中提供此路径。”
{“path”:“/startTime/?”}-->“任何路径类型集中都没有提供特殊的强制索引路径\“\/\”。请在其中一个集中提供此路径。”
{“path”:“/startTime”}-->“无法接受索引路径“\/startTime”,在位置“10”附近失败。请确保该路径是有效路径。常见错误包括无效字符或标签周围缺少引号。”
任何关于如何正确定义索引策略的帮助都将不胜感激
任何索引策略都必须将根路径/*作为
包含或排除的路径
指向标量值(字符串或数字)的路径以/
为了使代码正常工作,您可以尝试以下方法:
const indexingPolicy = {
includedPaths: [ {"path" : "/*"},{"path" : "/startTime/?"} ]
}
await container.replace({
id: containerId,
partitionKey: { paths: ["/id"] },
indexingPolicy: indexingPolicy
});
但据我所知,如果包含的路径中有{“path”:“/*”}
,则无需添加{“path”:“/startTime/?”}
。因为/*
可以包括“/startTime/?”
参考: