SQL查询以获取尚未释放的通知
我有一个CosmosDb容器,它存储通过信号器广播的通知。我已存储了这2个通知:SQL查询以获取尚未释放的通知,sql,azure-cosmosdb,azure-cosmosdb-sqlapi,Sql,Azure Cosmosdb,Azure Cosmosdb Sqlapi,我有一个CosmosDb容器,它存储通过信号器广播的通知。我已存储了这2个通知: [ { "createdOn": "2019-12-18T09:48:21.4556896Z", "disposed": [ { "disposedBy": "anotherAdmin@mail.com", "disposedOn": "2019/11/16T12:00:00"
[
{
"createdOn": "2019-12-18T09:48:21.4556896Z",
"disposed": [
{
"disposedBy": "anotherAdmin@mail.com",
"disposedOn": "2019/11/16T12:00:00"
}
],
"id": "615b9335-f78f-4a53-9e33-74e1b601d8bd",
"message": [
{
"culture": "en-US",
"key": "Title",
"value": "Controller notification!"
},
{
"culture": "en-US",
"key": "Message",
"value": "This is an info message received from PushNotifications controller!"
}
],
"target": "administrators",
"ttl": 86400,
"_rid": "iNZhANsdVb0XAQAAAAAAAA==",
"_self": "dbs/iNZhAA==/colls/iNZhANsdVb0=/docs/iNZhANsdVb0XAQAAAAAAAA==/",
"_etag": "\"0500558f-0000-0d00-0000-5dfa08d00000\"",
"_attachments": "attachments/",
"_ts": 1576667344
},
{
"createdOn": "2019-12-18T09:48:30.4778759Z",
"disposed": [
{
"disposedBy": "admin@mail.com",
"disposedOn": "2019/11/16T12:00:00"
},
{
"disposedBy": "anotherAdmin@mail.com",
"disposedOn": "2019/11/16T12:05:03"
}
],
"id": "287d1ce0-017e-40b5-ab47-9e2222448b33",
"message": [
{
"culture": "en-US",
"key": "Title",
"value": "Controller notification!"
},
{
"culture": "en-US",
"key": "Message",
"value": "This is an info message received from PushNotifications controller!"
}
],
"target": "administrators",
"ttl": 86400,
"_rid": "iNZhANsdVb0YAQAAAAAAAA==",
"_self": "dbs/iNZhAA==/colls/iNZhANsdVb0=/docs/iNZhANsdVb0YAQAAAAAAAA==/",
"_etag": "\"050092b6-0000-0d00-0000-5dfa0c750000\"",
"_attachments": "attachments/",
"_ts": 1576668277
}
]
现在,我想创建一个查询,以获取目标为管理员且未由管理员处理的所有通知admin@mail.com.
我尝试过一些查询,如:
选择值通知
从通知加入
选择值disposed.disposedBy
从通知中释放。已释放
在哪里处置。处置者!=admin@mail.com
其中notifications.target=管理员
及
选择值通知
从通知加入
选择值disposed.disposedBy
从通知中释放。已释放
在哪里处置。处置者!=admin@mail.com
加入选择值通知
其中notifications.target=管理员
甚至
选择值通知
从通知加入
选择值disposed.disposedBy
从通知中释放。已释放
其中数组_包含disposed.disposedBy,admin@mail.com
但它们都没有给我预期的结果,即只收到一个Id为615b9335-f78f-4a53-9e33-74e1b601d8bd的通知
如何构建此查询以获取针对某个特定目标且未由特定用户处理的通知
编辑1:如果我将disposed更改为字符串数组(如disposed:[user@mail.com, anotherUser@mail.com]使用查询
选择值通知
来自通知
如果未处理数组_包含通知,user@mail.com
AND notifications.target=管理员
你差点就明白了。请尝试我的sql:
SELECT value notifications
FROM notifications
WHERE notifications.target = "administrators"
and not Array_contains(notifications.disposed,{ "disposedBy": "admin@mail.com"},true)
输出:
是的,这就是我一直在寻找的,完美的工作!非常感谢。