Azure 查询cosmosql
我已经阅读了Azure cosmos文档,它目前表示不允许在同一数据库中加入2个不同的集合。 我需要帮助实现以下场景。 下面是Cosmos数据库中的文档。我也在使用SQLAPI 以下所有文档都在同一个集合中。”id'是分区键 文件1:Azure 查询cosmosql,azure,azure-cosmosdb,azure-cosmosdb-sqlapi,Azure,Azure Cosmosdb,Azure Cosmosdb Sqlapi,我已经阅读了Azure cosmos文档,它目前表示不允许在同一数据库中加入2个不同的集合。 我需要帮助实现以下场景。 下面是Cosmos数据库中的文档。我也在使用SQLAPI 以下所有文档都在同一个集合中。”id'是分区键 文件1: { "id": "12343920", "status": "1", "code": "111116" } { "id": "12343921", "status": "8", "code": "111117" }
{
"id": "12343920",
"status": "1",
"code": "111116"
}
{
"id": "12343921",
"status": "8",
"code": "111117"
}
文件2:
{
"id": "12343920",
"status": "1",
"code": "111116"
}
{
"id": "12343921",
"status": "8",
"code": "111117"
}
文件3:[与其他文件不同]
{
"id": "active",
"Part": [
{
"Name": "ABC",
"Status": [
"1",
"2",
"3"
]
},
{
"Name": "DEF",
"Status": [
"6",
"2",
"8"
]
}
],
}
我有一个存储过程,其中API带有3个参数
- 身份证
- 代码
- 名字
SELECT Value t.Status
from f
JOIN t in f.Part
where t.Name=@Name
此查询在SQL编辑器中工作[如果我用ABC替换@Name],但在存储过程中执行时不显示文档
其他代码:
SELECT n.id,n.code,n.Status
FROM order n
where n.Code=@Code
and n.id=@id and n.Status IN (
SELECT ARRAY(
SELECT Part.Status
FROM Part
in order.Part
WHERE Part.Name=@Name)
FROM orders WHERE orders.id='active')
在SELECT语句附近显示error
我期望的结果如下,它与API中的参数匹配
{
"id": "12343920",
"status": "1",
"code": "111116"
}
根据这一点,COSMOSDB到目前为止不支持子查询,所以它说SELECT语句附近有错误
为了满足您的需求,我建议您使用双sql查询
首先使用sql选择状态数组筛选器条件
SELECT value t.Status from f JOIN t in f.Part where t.Name= @Name
SELECT f.id,f.code,f.status from f where IS_DEFINED (f.Part) = false
and ARRAY_CONTAINS(@STATUS,f.status,false)
第二个sql将状态与筛选条件匹配
SELECT value t.Status from f JOIN t in f.Part where t.Name= @Name
SELECT f.id,f.code,f.status from f where IS_DEFINED (f.Part) = false
and ARRAY_CONTAINS(@STATUS,f.status,false)
根据这一点,COSMOSDB到目前为止不支持子查询,所以它说SELECT语句附近有错误
为了满足您的需求,我建议您使用双sql查询
首先使用sql选择状态数组筛选器条件
SELECT value t.Status from f JOIN t in f.Part where t.Name= @Name
SELECT f.id,f.code,f.status from f where IS_DEFINED (f.Part) = false
and ARRAY_CONTAINS(@STATUS,f.status,false)
第二个sql将状态与筛选条件匹配
SELECT value t.Status from f JOIN t in f.Part where t.Name= @Name
SELECT f.id,f.code,f.status from f where IS_DEFINED (f.Part) = false
and ARRAY_CONTAINS(@STATUS,f.status,false)
嗨,杰,谢谢。我还在解决这个问题。我正在使用COSMOSSQL编辑器尝试这一点。不确定这是否是测试的正确选项。好的,我试过了,但无法通过单个查询进行搜索。谢谢Jay,我需要将其合并到Cosmos存储过程中。是的,请将下面的查询SQL合并到存储过程中,它可以实现。嗨,如果我的答案对你有帮助,你可以把它标出来供别人参考。非常感谢。嗨,杰,谢谢。我还在研究这个问题。我正在使用COSMOSSQL编辑器尝试这一点。不确定这是否是测试的正确选项。好的,我试过了,但无法通过单个查询进行搜索。谢谢Jay,我需要将其合并到Cosmos存储过程中。是的,请将下面的查询SQL合并到存储过程中,它可以实现。嗨,如果我的答案对你有帮助,你可以把它标记出来供别人参考。非常感谢。嗨,杰,谢谢你分享你的意见。我无法进一步检查这一点,因为需求发生了变化,我没有工作平台。一旦我有了平台,我一定会更新我的评论。@Sathya不要紧,等待你的回复,有任何问题,请告诉我。嗨,Jay,谢谢分享你的意见。我无法进一步检查这一点,因为需求发生了变化,我没有工作平台。一旦我有了平台,我一定会更新我的评论。@Sathya没关系,等待你的回复,有任何问题,请告诉我。