使用 SQL 检查 CosmosDB JSON 中是否存在字段 - nodeJS

新手上路,请多包涵

我正在使用 Azure CosmosDB 存储文档 (JSON)。

我正在尝试查询包含字段 "abc" 的所有文档,并且不返回没有字段 "abc" 的文档。例如,返回下面的第一个对象而不是第二个

{
    "abc": "123"
}

{
    "jkl": "098"
}

我正在尝试使用以下代码:

 client.queryDocuments(
collectionUrl,
`SELECT r.id, r.authToken.instagram,r.userName FROM root r WHERE r.abc`
)

我假设上面会检查 abc 是否存在类似于 if (r.abc) {}

我试过使用 WHERE r.abc IS NOT NULL

提前致谢

原文由 JDT 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 714
2 个回答

您需要做的就是将您的查询更改为

SELECT r.id, r.authToken.instagram,r.userName FROM root r WHERE r.abc != null

或者

SELECT r.id, r.authToken.instagram,r.userName FROM root r WHERE r.abc <> null

两个运算符都可以工作(在数据资源管理器上测试)

原文由 Nick Chapsas 发布,翻译遵循 CC BY-SA 4.0 许可协议

如果您想知道一个字段是否存在,您应该使用 IS_DEFINED(“FieldName”) 如果您想知道该字段的值是否有值 FieldName != null 或 FieldName <> null (显然)

我在生产中使用了这个的变体:

 SELECT c.FieldName
FROM c
WHERE IS_DEFINED(c.FieldName)

原文由 A.Rowan 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进