azure-cosmosdb - 与 2 个字段组合的 IN 查询

标签 azure-cosmosdb azure-cosmosdb-sqlapi

我在 cosmos DB 文档中有一个设备列表(数千个),Make 和 SerialNumber 是每个 Assets 的唯一标识符。

[{
    "make": "CAT",
    "serial": "A1",
    "NAME": "CAR"
},
{
    "make": "ZAT",
    "serial": "B1",
    "NAME": "BUS"
}, {
    "make": "CAT",
    "serial": "C1",
    "NAME": "TRUCK"
}, {
    "make": "ABC",
    "serial": "A1",
    "NAME": "Plane"
}, {
    "make": "ZAT",
    "serial": "A1",
    "NAME": "BIKE"
}
]

我需要根据以下输入设备输入从上述文档中获取 Assets 的完整详细信息。

[{
    "make": "CAT",
    "serial": "A1"
},
{
    "make": "ZAT",
    "serial": "B1"
}, {
    "make": "CAT",
    "serial": "C1"
}
]

我正在使用下面的查询来获取完整的详细信息(我知道下面的查询是不正确的)。通常,我会在单个查询中传递 100 个串行设备。

select * from t where serial in (A1,B1,C1) and make in (CAT,ZAT,CAT)

有什么办法可以写出结合两个字段的IN查询吗?

预期结果

A1 猫

B1 ZAT

C1 猫

最佳答案

Pankaj Rawat,请使用这个查询sql,它可以满足您的要求。

SELECT c FROM c where
ARRAY_CONTAINS([
    {"serialNumber":"A1","make":"CAT"},
    {"serialNumber":"B1","make":"ZAT"},
    {"serialNumber":"C1","make":"CAT"}
    ],
    {"serialNumber": c.serialNumber,
       "make":c.make}
    )

输出:

enter image description here

关于azure-cosmosdb - 与 2 个字段组合的 IN 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55533446/

相关文章:

azure-cosmosdb - Cosmos DB 查询同一字段必须有两个值的文档

azure-cosmosdb - 如何设置 gremlin 控制台以针对本地 Azure CosmosDB 模拟器工作?

.net - 无法使用 CosmosDB V3 SDK 将 cosmosdb 容器吞吐量从手动更改为自动缩放

c# - 事务批处理 cosmos - 如果在分区中读取特定值则写入

azure - 如何定义涉及 Azure Cosmos DB 中嵌入数组中的属性的唯一键?

c# - 避免 CosmosDB 中的 UpsertAsync - 运行更新 SQL 命令

azure-cosmosdb - Azure Cosmos SQL - 使用嵌套数组并使用 LIKE 关键字

azure - 如何使用数组中的字段作为过滤器从 Cosmos DB 获取文档?

c# - FeedIterator 和 ReadNextAsync 如何工作?

java - 查询表达式中指示的分区键与 cosmos db 中的 feedoptions 中指示的分区键之间的差异