Stored procedures 无法使用数字分区键查询Cosmos DB
我试图使用数字字段作为分区键,但无法在其上运行存储过程。我不确定我是否做错了什么,或者这是不可能的 我有两个具有两个不同分区键的集合 集合1中的示例文档Stored procedures 无法使用数字分区键查询Cosmos DB,stored-procedures,key,azure-cosmosdb,partition,Stored Procedures,Key,Azure Cosmosdb,Partition,我试图使用数字字段作为分区键,但无法在其上运行存储过程。我不确定我是否做错了什么,或者这是不可能的 我有两个具有两个不同分区键的集合 集合1中的示例文档 { "id":"1", "group": "a" } 集合2中的示例文档 { "id":"1", "group": 1 } 不同之处在于,第二个集合中的group字段周围没有双引号 这两个集合都将group作为分区键,我正在尝试执行Azure Portal for Cosmos DB中提供的示例存储过程 虽然我能够成功运行第一个集合
{
"id":"1",
"group": "a"
}
集合2中的示例文档
{
"id":"1",
"group": 1
}
不同之处在于,第二个集合中的group字段周围没有双引号
这两个集合都将group作为分区键,我正在尝试执行Azure Portal for Cosmos DB中提供的示例存储过程
虽然我能够成功运行第一个集合,但第二个集合会产生一个错误“找不到文档”
我正在从sql server数据库导入数据,导入的int字段没有双引号。我搜索了很多,但找不到与没有双引号的数字分区键相关的文档
是否可以从数字字段执行分区键??感谢您的帮助,因为此字段最适合我的分区集合,非常有用。请不要担心cosmos db存储过程中支持的数字分区键。您做的一切都是正确的。您遇到了意外的结果,因为azure portal将分区键输入标识为
String
type,即使您填写了Number
type
您可以使用cosmos db sdk或rest api对其进行测试。例如,java sdk示例如下:
import com.microsoft.azure.documentdb.*;
public class ExecuteSPTest {
static private String YOUR_COSMOS_DB_ENDPOINT = "https://***.documents.azure.com:443/";
static private String YOUR_COSMOS_DB_MASTER_KEY = "***";
public static void main(String[] args) throws DocumentClientException {
DocumentClient client = new DocumentClient(
YOUR_COSMOS_DB_ENDPOINT,
YOUR_COSMOS_DB_MASTER_KEY,
new ConnectionPolicy(),
ConsistencyLevel.Session);
RequestOptions options = new RequestOptions();
PartitionKey partitionKey = new PartitionKey(1);
options.setPartitionKey(partitionKey);
StoredProcedureResponse queryResults = client.executeStoredProcedure(
"/dbs/db/colls/group/sprocs/sample",
options,
null);
String document = queryResults.getResponseAsString();
System.out.println(document);
}
}
输出:
感谢您的回复!是否可以在门户中查询,或者是通过SDK的唯一选项?@有兴趣的程序员到目前为止,根据我的观察,它只受SDK支持。但您可以创建一个反馈给cosmos db团队,然后按照该过程进行操作。非常感谢。