我试图将数字字段用作分区键,但是无法在它们上运行存储过程。我不确定自己是在做错什么还是不可能。
我有两个具有两个不同分区键的集合。
集合1中的示例文档
{
"id":"1",
"group": "a"
}
集合2中的样本文档
{
"id":"1",
"group": 1
}
区别在于第二个集合中的group字段周围没有双引号。
这两个集合都将组作为分区键,我正在尝试执行Azure Cosmos DB门户中提供的示例存储过程。
虽然我能够成功运行第一个集合,但第二个集合会产生错误“找不到文档” 。
我正在从sql server数据库中导入数据,并且int字段被导入而没有双引号。我进行了大量搜索,但找不到没有双引号的数字分区键相关文档。
是否可以从数字字段中进行分区键?任何赞赏的帮助,因为此字段最适合我的分区集合,并且非常有用。
答案 0 :(得分:0)
请不要担心cosmos db存储过程绝对支持的数字分区键。您所做的一切都正确无误。您遇到了意外的结果,因为即使您填写了String
类型,azure门户也将分区键输入识别为Number
类型。
您可以使用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);
}
}
输出: